2016-10-10 86 views
0

Iam使用ActiveMQ在Java中編寫應用程序,其中iam使用生產者和異步使用者機制,其中生產者發送的消息未因網絡消耗因此這些消息被髮送到ActiveMQ的死信隊列。訪問ActiveMQ的死信隊列中的消息,並在消費後重新傳遞給webservice或套接字

我的問題是如何訪問死信隊列中的消息,並通過在消費者中使用它併發送到web服務或套接字等來執行重試。任何代碼示例都會很好。

回答

1

哈森對於設置MDB消耗DLQ條目的可能性完全正確。

但是,設置重新傳送策略的正確位置在隊列或主題本身上(請參閱http://activemq.apache.org/redelivery-policy.html),並且不使用死信隊列。事實上,您只有一個MOM的DLQ實例,它將包含來自所有不同隊列/主題的消息並設置故障轉移機制,這意味着要管理不同的消息結構

+0

它也可以使用'individualDeadLetterStrategy'也 –

+0

但我同意,如果可能的話,最好設置一個重新交付政策,但最後如果消息不能交付他們去以DLQ –

+0

不知道,一定是提供者特定的功能...無論如何,當你陷入DLQ時,你會丟失一些消息元數據(重新交付計數等)。 – Gab

3

DLQ就像任何主題或隊列一樣,您可以像任何主題或隊列一樣訂閱它,並使用累積的消息。以下是列表http://activemq.apache.org/advisory-message.html

訂閱DLQ的名稱是ActiveMQ.DLQ如果您沒有individualDeadLetterStrategy,則您訂閱並執行onMessage方法。 http://activemq.apache.org/message-redelivery-and-dlq-handling.html

+0

不是我的問題不是關於諮詢支持,而是更準確地說,我想要檢查** ActiveMQ.DLQ **中的消息,並不斷迭代DLQ中的消息,以便我可以執行一些重新傳送機制 –

+0

正如我所說的,DLQ與任何主題或隊列類似,您可以訂閱它像任何主題或隊列,並消費信息 –