重启后缺少ActiveMQ 5.13.2消息

时间:2016-06-24 14:40:24

标签: java activemq

我是活跃MQ的新手。已安装activemq 5.13.2。在activeMQ服务器重启后,我丢失了所有消息(包括持久主题)。请在主动MQ服务器重启之前和之后找到以下控制台屏幕截图。

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>

3 个答案:

答案 0 :(得分:1)

真正的问题似乎是重启后的activemq控制台。消息没有消失,控制台似乎只是出现了错误。

activemq console screenshot

答案 1 :(得分:0)

如果您需要在重新启动时保持持久的消息,则生产者必须将它们设置为持久性,否则代理将不会持久化它们。如果您使用驼峰进行路由,则路由必须标记为已处理或者它们也将消失。因此,可以告诉代理持久消费者,但消息不会持久,除非生产者(客户端)在发送之前将其标记为持久消息。

答案 2 :(得分:0)

  1. 队列在重新启动后仍然存在消息。
  2. 持久的主题仍然存在消息,但问题是控制台不会显示那些。一旦重新启动activemq,您的持久订阅者将收到它。