目录
一、死信交换机和队列
1.1、需求分析
当生产者发送了一个消息,经过交换机到达队列时,满足下列情况之一时,就可以成为死信:
- 消费者使用 basic.reject 或 basic.nack 声明消费失败,并且消息的 requeue 参数设置为 false(消息不重新加入到队列中).
- 消息设置了过期时间,到了时间没有被消费掉.
- 要投递的队列消息堆积满了(队列设置了最大消息数目),最早的消息可能会成为死信(LRU 算法淘汰的消息).
此时,只要这个队列配置了 dead-letter-exchange(死信交换机)和 dead-letter-routing-key(死信 routingKey),那么这个队列就会把消息通过 死信交换机 发送给对应的 死信队列.
因此这里我去实现的时候,只需要给队列再增加两个属性,然后在每次判定死信生成的地方,调用 basicPublish 方法,将消息通过 死信交换机 发布到 死信队列即可.

本文介绍了如何在RabbitMQ中处理死信,包括需求分析和具体实现步骤。当消息满足特定条件如被拒绝、过期或队列满时,会变为死信并由死信交换机转发到死信队列。通过在队列参数工具类中添加死信属性、校验参数、实现死信转发方法,并在VirtualHost中调用这些功能,确保死信得到正确处理。
订阅专栏 解锁全文
5429

被折叠的 条评论
为什么被折叠?



