发布于 2014-12-24 19:29:09
根据文档,如果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侦听器中强制失败,并将defaultRequeueRejected设置为false。
https://stackoverflow.com/questions/27640358
复制相似问题