【发布时间】:2019-06-02 03:20:07
【问题描述】:
我有一个类似于这个的 ActiveMQ 问题: http://activemq.2283324.n4.nabble.com/Messages-stuck-in-pending-td4617979.html 并且已经尝试过这里发布的解决方案。
有些消息似乎卡在队列中,并且可以在那里放置几天而不会被消耗。我有足够多的消费者大部分时间都是免费的,所以这不是消费者“饱和”的问题。
在 ActiveMQ 重新启动时,一些待处理的消息会立即被消耗。就在刚才,我有 25 个免费消费者可用于队列(它们在管理面板中可见),其中有 7 条“卡住”消息。其中四个立即被消耗,但其他 3 个仍被卡住。另一个奇怪的事情是 - 新消息不断进入队列并立即被消耗,而 3 条旧消息仍然卡住。
在消费者方面,我在 spring 中的配置如下所示:
<jms:listener-container concurrency="${activemq.concurrent.consumers}" prefetch="1">
<jms:listener destination="queue.request" response-destination="queue.response" ref="requestConsumer" method="onRequest"/>
</jms:listener-container>
<bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
<property name="queuePrefetch" value="1" />
</bean>
<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="${activemq.broker.url}?initialReconnectDelay=100&maxReconnectDelay=10000&startupMaxReconnectAttempts=3"/>
<property name="prefetchPolicy" ref="prefetchPolicy"/>
</bean>
【问题讨论】: