Java Spring Amqp+中的不同死信队列;基于异常的RabbitMQ

Java Spring Amqp+中的不同死信队列;基于异常的RabbitMQ,java,spring,rabbitmq,amqp,spring-amqp,Java,Spring,Rabbitmq,Amqp,Spring Amqp,给定使用RabbitMQ队列消息的基本MessageListener实现,如何根据处理消息时可能引发的异常类型将消息发送到不同的死信队列 消息最初发布的队列上设置了x-dead-letter-exchange和x-dead-letter-routing-key,但这在我的情况下是不够的 如果有问题,我的应用程序使用的是Spring 4和Spring Amqp。据我所知,RabbitMQ文档和Spring Amqp无法根据代码内部的条件向不同的DLQ发送消息。我之所以这样说,是因为我对代码调试的理

给定使用RabbitMQ队列消息的基本
MessageListener
实现,如何根据处理消息时可能引发的异常类型将消息发送到不同的死信队列

消息最初发布的队列上设置了
x-dead-letter-exchange
x-dead-letter-routing-key
,但这在我的情况下是不够的


如果有问题,我的应用程序使用的是Spring 4和Spring Amqp。

据我所知,RabbitMQ文档和Spring Amqp无法根据代码内部的条件向不同的DLQ发送消息。我之所以这样说,是因为我对代码调试的理解是,当消息必须发送到DLQ时,代码没有指定交换或路由密钥,RabbitMQ使用消息发布时定义的密钥

因此,我找到的唯一解决方案是实现如下内容:


试一试{
尝试做有用的事情(信息);
}捕获(业务异常e){
将消息重新发送到业务dlq(消息);
}

这样,如果抛出业务异常,则会手动将消息发送到业务DLQ。当然,一些细节会丢失,比如原始队列,但如果不使用它们,这不是问题


当抛出非业务异常时,将遵循标准路径:重试(如果已配置),然后路由到定义的DLQ。

您可以发布代码吗?