首页 > 解决方案 > RabbitMQ:在使用 DLX 策略发送到 DLQ 之前向消息头添加异常

问题描述

在将异常发送到具有 RabbitMQ 中的 DLX 策略的 DLQ 之前,您能否建议一种将异常添加到我的原始消息头的方法

我试图用方面来做,但我改变的消息不是推送到 DLQ 的消息,这是正常的,代理中的原始消息总是被发布。

@Service
@RabbitListener(queues = "queueName")
public class Listener {


    @RabbitHandler
    public void receive(BasicMessage message) {
        try {
            doSomeWork();
            
        } catch(Exception e) {

        }
    }
}

标签: rabbitmqspring-rabbit

解决方案


消息必须以编程方式重新发布;如果代理只是将消息重新路由到 DLQ,则您无法修改消息。

该框架提供了一种机制来做到这一点。

请参阅文档

RepublishMessageRecoverer消息头中发布带有附加信息的消息,例如异常消息、堆栈跟踪、原始交换和路由密钥。可以通过创建子类和覆盖来添加额外的头文件additionalHeaders()。(deliveryMode或任何其他属性)也可以在additionalHeaders().


推荐阅读