如何在兔子消息上写下其他信息

时间:2015-11-19 17:24:19

标签: java rabbitmq spring-amqp spring-rabbit rabbitmq-exchange

我有一个带有消息的兔子队列。我也有一个失败的倾听者。队列配置了死信交换(以及死信队列)。我想要的是在死信队列中看到消息中的异常信息。

目前它是如何运作的:

  1. 我将损坏的邮件发送到正常的队列。
  2. 我的听众(我使用Java&org.springframework.amqp.core.MessageListener)失败了,例如:" java.lang.RuntimeException:corrupted message"
  3. 邮件被拒绝,并通过死信交换进入死信队列。
  4. 当我在Rabbit Admin UI中查看死信函时,我看到: 标题:
    X-死亡:
    理由:拒绝
  5. 但我想要的是看到" java.lang.RuntimeException:损坏的消息"在UI上的某个地方。我认为它应该是一个自定义标题?

    例如,是否可以将一般的try-catch放到我的监听器中并使用异常信息增强标头?

1 个答案:

答案 0 :(得分:5)

没有; RabbitMQ(实际上是AMQP规范)没有为消费者提供任何机制来增强被拒绝的消息和附加信息。该协议仅支持确认或拒绝消息。

Spring AMQP与重试拦截器一起提供了一种机制,可以将消息重新发布到不同的队列(可以与DLQ相同),并在头文件中添加其他信息(异常堆栈跟踪等)。

请参阅RepublishMessageRecoverer in the section about error handling with asynchronous consumers