2016-06-24 5 views
6

アクティブMQを初めて使用しています。インストールされたactivemq 5.13.2。 activeMQサーバーを再起動した後、私のメッセージ(耐久性のあるトピックを含む)がすべて失われています。アクティブなMQサーバーを再起動する前後のコンソール画面のショットを確認してください。再起動後にActiveMQ 5.13.2のメッセージが失われる

before activeMQ restart

After ActiveMQ restart

これは私のactivemq.xmlの設定です:

<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> 


    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="locations"> 
      <value>file:${activemq.conf}/credentials.properties</value> 
     </property> 
    </bean> 


    <bean id="logQuery" class="io.fabric8.insight.log.log4j.Log4jLogQuery" 
      lazy-init="false" scope="singleton" 
      init-method="start" destroy-method="stop"> 
    </bean> 

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" persistent="true" useShutdownHook="false"> 

     <destinationPolicy> 
      <policyMap> 
       <policyEntries> 
       <policyEntry topic=">" > 

        <pendingMessageLimitStrategy> 
        <constantPendingMessageLimitStrategy limit="1000"/> 
        </pendingMessageLimitStrategy> 
       </policyEntry> 
       </policyEntries> 
      </policyMap> 
     </destinationPolicy> 



     <managementContext> 
      <managementContext createConnector="false"/> 
     </managementContext> 


     <persistenceAdapter> 
      <kahaDB directory="${activemq.data}/kahadb" journalMaxFileLength="32mb"/> 
     </persistenceAdapter> 




      <systemUsage> 
      <systemUsage> 
       <memoryUsage> 
        <memoryUsage percentOfJvmHeap="70" /> 
       </memoryUsage> 
       <storeUsage> 
        <storeUsage limit="100 gb"/> 
       </storeUsage> 
       <tempUsage> 
        <tempUsage limit="50 gb"/> 
       </tempUsage> 
      </systemUsage> 
     </systemUsage> 


     <transportConnectors> 

      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
      <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
      <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
      <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
      <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
     </transportConnectors> 

     <destinations> 
       <queue physicalName="testQueue"> 
       </queue> 
       <topic physicalName="testTopic" /> 
     </destinations> 

     <shutdownHooks> 
      <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> 
     </shutdownHooks> 


    </broker> 


    <import resource="jetty.xml"/> 

</beans> 
+1

メッセージは永続としてマークされていますか? (http://activemq.apache.org/why-do-i-not-receive-messages-on-my-durable-topic-subscription.htmlを参照してください) – mjn

+0

@mjn状態として - メッセージはデフォルトで非永続的ですWebコンソールから送信されます。アプリケーションから送られたメッセージについては、コードを再確認してください –

+0

再起動時に '$ {activemq.data}/kahadb'ディレクトリが何らかの理由できれいになっていませんか? – yegodm

答えて

1

本当の問題は、再起動後にActiveMQのコンソールのようです。メッセージは消えませんでした、コンソールは何か間違っているように見えるだけです。

activemq console screenshot

0

あなたはメッセージが必要な場合はプロデューサーが永続として、それらを設定するか、ブローカはそれらを保持されません持って再起動しても持続しました。ラクダを使用して経路を指定している場合は、経路をトランザクションとしてマークするか、経路も消えます。したがって、ブローカーには耐久消費者についての情報を伝えることができますが、プロデューサ(クライアント)がメッセージを送信する前に永続的なものとしてマークしない限り、メッセージは持続しません。

0
  1. キューは再起動後もメッセージを保持します。
  2. 耐久性のあるトピックはメッセージを持続させますが、コンソールには表示されないという問題があります。あなたの恒久サブスクライバは、activemqを再起動するとそれを受け取ります。
関連する問題