복붙노트

[SPRING] 임베디드 ActiveMQ의 시작 오류 : 임시 저장소 제한은 51200MB입니다.

SPRING

임베디드 ActiveMQ의 시작 오류 : 임시 저장소 제한은 51200MB입니다.

나는 독립적 인 ActiveMQ를 보내고 듣는 Spring 웹 애플리케이션을 가지고있다. 웹 응용 프로그램을 시작하면 다음과 같이 표시됩니다.

20:12:52.684 [localhost-startStop-1] ERROR o.a.activemq.broker.BrokerService - Temporary Store limit is 51200 mb, whilst the temporary data directory: /root/activemq-data/localhost/tmp_storage only has 29021 mb of usable space

내가 봤 거든 많은 기사를 읽고, 그들은 모두 브로커 및 시스템 구성을 참조하여 임시 저장소 크기를 제한합니다. 그러나 스프링 구성에서이 작업을 수행하는 방법은 없습니다. 아래는 내 구성 XML입니다.

<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${jms.broker_url}" />
</bean>
<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="connectionFactory" />
    <property name="sessionCacheSize" value="10" />
</bean>

<bean id="recvQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="q.recv" />
</bean>
<bean id="sendQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="q.send" />
</bean>
<bean id="notifyQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="q.notify" />
</bean>

<!-- Spring JMS Template -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="cachingConnectionFactory" />
</bean>
<bean id="batchImplMessageProducer" class="com.seebon.spfcore.repository.jms.BatchImplMessageProducer">
    <property name="jmsTemplate" ref="jmsTemplate" />
    <property name="sendQueue" ref="sendQueue" />
    <property name="recvQueue" ref="recvQueue" />
    <property name="notifyQueue" ref="sendQueue" />

</bean>

<bean id="advancedQueueContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destination" ref="recvQueue" />
    <property name="messageListener" ref="recvBatchImplMessageListener" />

    <property name="concurrentConsumers" value="5" />
    <property name="maxConcurrentConsumers" value="10" />
</bean>


<bean id="recvBatchImplMessageListener" class="com.seebon.spfcore.repository.jms.RecvBatchImpMessageListener" />

나 좀 도와 줘, 고마워!

해결법

  1. ==============================

    1.당신의 activeMQ.xml에서 당신은 다음과 같은 몇 가지 설정을 할 수 있습니다.

    당신의 activeMQ.xml에서 당신은 다음과 같은 몇 가지 설정을 할 수 있습니다.

    <systemUsage>
       <systemUsage>
          ....
          <tempUsage>
             <tempUsage limit="50 gb"/>
          </tempUsage>
       </systemUsage>
    </systemUsage>
    

    디스크에있는 값을 지정해야합니다. 를 여유 공간보다 작은 값으로 설정하는 데 필요한 29021 MB의 여유 공간 만 있습니다

    당신은 와 같은 것을 할 수있다.

    희망이 도움이!

    행운을 빕니다!

  2. ==============================

    2.나는 같은 문제가 있었지만 서버의 어딘가에 activeMQ.xml을 배치하는 것이이 경우에는 최선의 방법이 아니라고 생각합니다.

    나는 같은 문제가 있었지만 서버의 어딘가에 activeMQ.xml을 배치하는 것이이 경우에는 최선의 방법이 아니라고 생각합니다.

    임베디드 액티브 mq 서버를 사용할 때 모든 구성을 한 곳에서 유지하고자합니다 (특히 프로젝트 / war 파일에서).

    이제이 링크에서 설명한대로 브로커 bean 정의에서 직접 tempUsage 구성 값을 설정할 수 있습니다.

    예 :

    <amq:broker useJmx="false" persistent="false">
        <amq:transportConnectors>
            <amq:transportConnector uri="tcp://localhost:0"/>
        </amq:transportConnectors>
        <amq:systemUsage>
            <amq:systemUsage>
                <amq:memoryUsage>
                    <amq:memoryUsage limit="64 mb"/>
                </amq:memoryUsage>
                <amq:storeUsage>
                    <amq:storeUsage limit="512 mb"/>
                </amq:storeUsage>
                <amq:tempUsage>
                    <amq:tempUsage limit="128 mb"/>
                </amq:tempUsage>
            </amq:systemUsage>
        </amq:systemUsage>
    </amq:broker>
    

    (amq - 네임 스페이스 = http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd)

  3. from https://stackoverflow.com/questions/27546730/startup-error-of-embedded-activemq-temporary-store-limit-is-51200-mb by cc-by-sa and MIT license