[英]ActiveMQ Pending messages
我有一个与 ActiveMQ 类似的问题: http : //activemq.2283324.n4.nabble.com/Messages-stuck-in-pending-td4617979.html并且已经尝试了此处发布的解决方案。
有些消息似乎卡在队列中,可以在那里停留数天而不会被消耗。 我有足够多的消费者,大部分时间都是免费的,所以这不是消费者“饱和”的问题。
在 ActiveMQ 重新启动后,一些挂起的消息会立即被消耗。 就在刚才,我有 25 个免费消费者可用于队列(它们在管理面板中可见),其中有 7 个“卡住”消息。 其中四个立即被消耗,但其他三个仍然卡住。 另一个奇怪的事情是 - 新消息不断进入队列并立即被消耗,而 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>
“卡住”的消息可能被认为是“正在传递”,重新启动代理将关闭连接,并且由于消息尚未确认,代理将它们视为未传递并将再次传递它们。
导致这种情况的可能有几个问题,最常见的问题是事务/确认配置中的问题,消费者端的错误/确认管理错误(消息被消费但从未确认)或消费者卡在无休止的操作中(对于例如对不响应且没有超时处理的第三方资源的阻塞调用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.