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