2012-07-09 72 views
0

我有一個activemq實例設置與tomcat的背景消息處理。它設置爲每10分鐘重試一次失敗的消息以進行重試。activemq不斷地重試錯誤消息,而不是拾起新的消息

現在一些髒數據已進入系統,因爲這些消息失敗。這是好的,可以在將來修復。但是,問題是新的正確的傳入消息沒有得到處理,並且錯誤消息不斷得到重試。

有關可能存在問題的任何提示或設置優先級的方式?我沒有手動控制消息的優先級。

感謝您的幫助。

-Pulkit

編輯:我能解決這個問題。問題是,當所有的骯髒信息都被處理的時候,是時候重試它們了。因此,沒有任何新消息正在被隊列消耗。 髒信息基本上是由於系統中某些髒數據而拋出異常的消息。重新交付設置是每10分鐘進行一次重新交付。 maximumRedeliveries = 144個 redeliveryDelayInMillis = 600000 acknowledge.mode =成交

+0

您能否添加一些關於如何設置重試的細節,以及如何定義/處理失敗的消息?上述問題中沒有足夠的信息。 – 2012-07-11 09:06:20

回答

1

ActiveMQ的確定用於基於已分配的ActiveMQConnectionFactory的RedeliveryPolicy的結構的消費者重新傳遞。本地重新傳遞會暫停新的郵件分發,直到成功地重新傳遞迴滾事務郵件爲止,所以如果您有一條消息導致您出現某種錯誤,例如拋出異常或回滾事務,則它將被重新傳遞到最大重新傳遞政策中的設置。由於您的問題沒有提供有關您的設置的更多信息,以及您認爲哪些信息是錯誤信息,因此我無法將您引導至解決方案。

您應該查看Redelivery Policy中可用的設置。此外,您可以配置重新傳遞以不使用setNonBlockingRedelivery方法阻止新的消息分派。