Ant*_*lev 4 rabbitmq dead-letter
这是我们在这里有的:
DLE,旨在成为死信交换E,这是"主要"交易所EQ1,...,EQn)绑定E(并初始化x-dead-letter-exchange = DLE),每个队列都有自己的路由密钥.这些队列是从中消耗的队列.EQn,有一个DLEQn(用x-dead-letter-exchange = E和初始化x-message-ttl = 5000),绑定到DLE相同的路由密钥EQn.这些队列没有被消耗掉我想要的是以下内容:如果消费者无法处理消息EQn,它将消息Nack requeue: false并且它到达DLEQn- 也就是说,死信交换上的适当队列.现在,我想让这条消息DLEQn停留一段时间,然后再路由回原始队列EQn再次处理.
尽我所能,我无法将"重新传送到原始队列"工作.我看到消息中DLEQn包含所有正确的标题和路由密钥完好无损,但在TTL过期后它们就会消失得无影无踪.
我在这做错了什么?
是的,你可以这样做.我们目前在生产中这样做,效果很好.代码太长,不能包含在这里,但我会向您展示我创建的代表流程的图表.基本思想是第一个DLX有一个TTL,一旦TTL到期,消息就会进入第二个队列重新发送回原始状态.

RabbitMQ检测消息流循环(E-> DLE-> E-> DLE ...)并静默丢弃消息:
可能形成死信队列的循环。例如,当队列将邮件死信到默认交换而不指定死信路由键时,可能会发生这种情况。如果整个周期是由于消息到期,则将丢弃此类周期中的消息(即,两次到达同一队列的消息)。
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |