如何在兔子消息被删除时指定其他信息

问题描述 投票:3回答:1

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

目前它的工作原理如下:

  1. 我将损坏的邮件发送到我的正常队列。
  2. 我的监听器(我正在使用Java的org.springframework.amqp.core.MessageListener)失败,例如:“java.lang.RuntimeException:corrupted message”
  3. 该消息被拒绝并通过死信交换进入死信队列。
  4. 当我在Rabbit Admin UI中查看死信函时,我看到:标题: X-死亡: 理由:拒绝

但我想要的是在UI上的某处看到“java.lang.RuntimeException:corrupted message”。我认为它应该是一个自定义标题?

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

java rabbitmq spring-amqp spring-rabbit rabbitmq-exchange
1个回答
6
投票

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

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

RepublishMessageRecoverer in the section about error handling with asynchronous consumers

© www.soinside.com 2019 - 2024. All rights reserved.