带RabbitMq的Spring amqp:消息从死信队列中掉下来后不会被圈回到活动队列

带RabbitMq的Spring amqp:消息从死信队列中掉下来后不会被圈回到活动队列,rabbitmq,spring-amqp,spring-rabbit,Rabbitmq,Spring Amqp,Spring Rabbit,我正在努力实现这一目标。有很多相互矛盾的答案需要知道它是否可能 根据之前的链接,这是不可能的。但在这个论坛上的另一个问题中,有人评论说他们能够在评论部分和 那么,可以执行livequeue=>死信队列=>livequeue吗 或者我需要使用RabbitMq的特定版本来实现这一点吗 我能做到:实时队列=>死信队列 死信队列=>实时队列。如果来自活动的死信到期,则无法执行此操作-根据文档 有可能形成一个死信队列循环。例如,将死信消息排队到默认exchange而不指定死信路由密钥时,可能会发生这种情况

我正在努力实现这一目标。有很多相互矛盾的答案需要知道它是否可能

根据之前的链接,这是不可能的。但在这个论坛上的另一个问题中,有人评论说他们能够在评论部分和

那么,可以执行livequeue=>死信队列=>livequeue吗

或者我需要使用RabbitMq的特定版本来实现这一点吗

我能做到:实时队列=>死信队列
死信队列=>实时队列。

如果来自
活动的死信到期,则无法执行此操作-根据文档

有可能形成一个死信队列循环。例如,将死信消息排队到默认exchange而不指定死信路由密钥时,可能会发生这种情况。如果整个周期是由于消息过期而导致的,则此类周期中的消息(即两次到达同一队列的消息)将被丢弃

(我的重点)

我刚刚运行了一个测试,其中来自
alive
的死信是由于拒绝而产生的,它工作正常;经过几个循环后,
x-death
标题如下所示

reason: rejected
queue:  alive
time:   1419448981
exchange:   req
routing-keys:   alive

reason: expired
queue:  dead
time:   1419448981
exchange:   dlx
routing-keys:   alive

reason: rejected
queue:  alive
time:   1419448976
exchange:   req
routing-keys:   alive

reason: expired
queue:  dead
time:   1419448976
exchange:   dlx
routing-keys:   alive

...

为了测试这一点,我强制Spring AMQP侦听器出现故障,并将
defaultRequeueRejected
设置为
false

。它确实到期了。