1

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

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

那么,是否可以做实时队列 => 死信队列 => 实时队列

还是我需要使用特定版本的 RabbitMq 来实现这一点?

我能够做到:活队列 => 死信队列和死信队列 => 活队列。

4

1 回答 1

2

如果死信alive到期,你就不能这样做 - 根据文档......

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

(我的重点)。

我刚刚进行了一个测试,其中死信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 侦听器失败并设置defaultRequeueRejectedfalse.

于 2014-12-24T19:29:09.133 回答