[英]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.