2014-12-18 13 views
5

Ho un'applicazione Web Spring che invierà e ascolterà su un ActiveMQ autonomo. Quando avvio l'applicazione Web, si vede:Errore di avvio di ActiveMQ incorporato: Limite di archiviazione temporaneo è 51200 mb

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 

Ho cercato su google e leggere molti articoli, si riferiscono tutti a configurare broker e systemusage per limitare la dimensione negozio Temp. Tuttavia, non so come farlo nella configurazione di Spring. Di seguito è riportato il mio XML di configurazione.

<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" /> 

Please help me fuori di qui, GRAZIE!

risposta

7

Nella tua activeMQ.xml si avrebbe una certa configurazione come questa

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

è necessario specificare un valore che è disponibile sul disco, come errore menziona chiaramente c'è solo 29021 MB di spazio libero è necessario impostare <tempUsage limit="50 gb"/> ad un valore inferiore di quanto il tuo spazio libero

si può fare qualcosa di simile <tempUsage limit="20 gb"/>

Spero che questo aiuti!

Buona fortuna!

+1

Grazie per l'aiuto. Ma non ho questo file di configurazione nella mia app web, dovrei crearne uno? ActiveMQ lo leggerà automaticamente? – BurnetZhong

+0

Il file sarà presente dove è in esecuzione l'istanza activemq, ovvero il luogo in cui ci si connette al proprio broker i. e il tuo {broker_url} se ci mostra quell'URL possiamo indicarlo – Vihar

+0

Grazie ancora. My ActiveMQ è ospitato nella stessa macchina, quindi è localhost. – BurnetZhong

4

Ho avuto lo stesso problema, ma posizionare un file MQ.xml da qualche parte sul server non è la migliore idea in questo caso, penso.

Quando utilizzo un server di mq attivo incorporato, voglio mantenere tutta la configurazione in un posto (specialmente nel mio progetto/file di guerra).

Ora è possibile impostare i valori di configurazione di tempUsage direttamente alla definizione del bean-bean: come descritto in questo link.

Ad esempio:

<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 - namespace = http://activemq.apache.org/schema/corehttp://activemq.apache.org/schema/core/activemq-core.xsd)

Problemi correlati