如何找到未传递的 JMS 消息的原始目的地。

Posted

技术标签:

【中文标题】如何找到未传递的 JMS 消息的原始目的地。【英文标题】:How to find the original destination for an undelivered JMS message. 【发布时间】:2016-07-06 08:42:02 【问题描述】:

有没有办法获取未传递的 JMS 消息的原始地址队列。我正在使用 JBOSS HornetQ,发现我可以获取消息所在的 JMSMessageID 和时间戳以及当前队列(死信队列),但我想找到消息来自哪个队列。

【问题讨论】:

【参考方案1】:

我是 HornetQ 的新手,但曾使用过 IBM MQ。

在将消息放入死信队列时,消息传递提供程序会添加一个标头,该标头将包含原始 MessageID、原始队列(消息从何处传递到应用程序)等信息。DLQ 处理程序使用此信息重新路由消息到它的原始队列。

您是否尝试过以下来自 DLQ 的消息?

SimpleString originalQueue = dlqMessage.getSimpleStringProperty(Message.HDR_ORIGINAL_QUEUE);

【讨论】:

以上是关于如何找到未传递的 JMS 消息的原始目的地。的主要内容,如果未能解决你的问题,请参考以下文章

如何理解 JMS 中的“同步”和“异步”消息传递?

如何确保来自 JMS 队列的消息被传递到外部 WebService (CXF)?

如何在 AUTO_ACKNOWLEDGE JMS 会话场景中模拟消息重新传递?

如何通过 IBM MQ 使用 JMS 点对点消息传递模型来测量 SuT 的响应(处理)时间?

避免 JMS/ActiveMQ 上的重复消息

重新传递 Mule ESB 处理的失败的 activemq jms 消息时保留异常原因