【发布时间】:2017-02-18 18:06:31
【问题描述】:
我正在使用 ActiveMQ 在 Java 中编写应用程序,其中我使用生产者和异步消费者机制,其中生产者发送的消息由于网络故障而未被消耗。因此这些消息被发送到 ActiveMQ 的死信队列。
我的问题是如何访问死信队列中的消息并通过在消费者中使用它并发送到 Web 服务或套接字等来执行重试。任何代码示例都会很棒。
【问题讨论】:
标签: java jakarta-ee jms activemq jms-topic
我正在使用 ActiveMQ 在 Java 中编写应用程序,其中我使用生产者和异步消费者机制,其中生产者发送的消息由于网络故障而未被消耗。因此这些消息被发送到 ActiveMQ 的死信队列。
我的问题是如何访问死信队列中的消息并通过在消费者中使用它并发送到 Web 服务或套接字等来执行重试。任何代码示例都会很棒。
【问题讨论】:
标签: java jakarta-ee jms activemq jms-topic
DLQ 就像任何主题或队列一样,您可以像任何主题或队列一样订阅它并使用累积的消息。这是列表http://activemq.apache.org/advisory-message.html
要订阅它的 DLQ 的名称是 ActiveMQ.DLQ 如果你没有 individualDeadLetterStrategy ,你订阅并做你的业务 onMessage 方法。
http://activemq.apache.org/message-redelivery-and-dlq-handling.html
【讨论】:
Hassen 关于设置一个使用 DLQ 条目的 MDB 的可能性是完全正确的。
但是,设置重新传递策略的正确位置是队列或主题本身(请参阅http://activemq.apache.org/redelivery-policy.html),而不是使用死信队列。实际上,您只有一个用于 MOM 的 DLQ 实例,它将包含来自所有不同队列/主题的消息,并且在那里设置故障转移机制将意味着管理不同的消息结构
【讨论】:
individualDeadLetterStrategy