首页 文章

一段时间后,activemq队列中没有新的消费者

提问于
浏览
2

从一个月开始,我们就遇到了activemq和spring的重复问题 . 经过一段时间(一天到一周之间),我们没有更多的消费者,没有新的消费者开始,队列开始填满 .

这个设置运行了一年多,没有任何问题,只要我们看到没有任何相关的改变 .

我们使用的另一个队列也开始显示相同的行为,但不太常见 .

来自activemq webconsole(因为你可以看到许多待处理的消息,没有消费者)

Name ↑ Number Of Pending Messages Number Of Consumers Messages Enqueued Messages Dequeued Views Operations
queue.readresult 19595 0 40747 76651 Browse Active Consumers

我们的bundle-context.xml的内容

<!-- JMS -->
<bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
    <property name="maxConnections" value="5" />
    <property name="maximumActive" value="5" />

    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL">
                <value>tcp://localhost:61616</value>
            </property>
        </bean>
    </property>
</bean>


<bean id="ResultMessageConverter" class="com.bla.ResultMessageConverter" />

<jms:listener-container connection-factory="jmsConnectionFactory" destination-resolver="jmsDestinationResolver"
    concurrency="2" prefetch="10" acknowledge="auto" cache="none" message-converter="ResultMessageConverter">
    <jms:listener destination="queue.readresult" ref="ReaderRequestManager" method="handleReaderResult" />
</jms:listener-container>

任何日志都不例外 . 有没有人知道为什么一段时间后没有新的消费者可以开始 .

谢谢

2 回答

  • 0

    在“消费者停止消费”之前,我遇到了一些问题,但没有看到消费者停止存在 . 您可能正在池中的内存和/或连接不足 . 您是否必须重新启动ActiveMQ才能解决问题或仅修复应用程序?

    以下是一些建议:

    • 将队列预取设置为0

    • 在连接字符串上添加"useKeepAlive=false"

    • 增加队列的内存限制

  • 1

    我在配置中看不出明显的原因,为什么它会失败 . 所以你需要诉诸经典的故障排除 .

    尝试将日志记录设置为调试并重新创建问题 . 然后你应该能够看到更多,你可能能够找到它的根本原因 .

    另外,检查JMS异常监听器并尝试将其附加到它的实现中以掌握真正的问题 .

    http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html

相关问题