RabbitMQ的TLL

过期时间

RabbitMQ支持两种过期时间

  1. 队列级别:通过队列的属性设置,队列中所有消息都有相同的过期时间,一旦消息过期,就会从队列中抹去。设置队列级别的 TTL 主要目的是让消息在被消费之前自动过期和删除,从而避免无用消息长期占用资源。
  2. 消息级别:对消息本身进行单独设置,每条消息的 TTL 可以不同,即使消息过期,也不会马上从队列中抹去,因为每条消息是否过期是在即将投递到消费者之前判定的。

如果两种方法一起使用,则消息的 TTL 以两者之间较小的那个数值为准。消息在队列中的生存时

一旦超过设置 TTL 值时,就会变成"死信" (Dead Message) ,消费者将无法再收到该消息。

消息过期处理策略

  1. 队列级别:队列中己过期的消息肯定在队列头部, RabbitMQ 只要定期从队头开始扫描是否有过期的消息即可。
  2. 消息级别:每条消息的过期时间不同,如果要删除所有过期消息势必要扫描整个队列,所以不如等到此消息即将被消费时再判定是否过期 如果过期再进行删除即可。

死信队列

当消息在一个队列中变成死信 (dea message) 之后,它能被重新被发送到另一个交换器中,这个

交换器就是 DLX ,绑定 DLX 的队列就称之为死信队列。

消息变成死信 般是由于以下几种情况:

  1. 消息被拒绝并且设置 requeue 参数为 false
  2. 消息过期
  3. 队列长度达到最大长度
相关推荐
aP8PfmxS26 小时前
从零学习Kafka:数据存储
分布式·学习·kafka
必胜刻9 小时前
Redis分布式锁讲解
数据库·redis·分布式
少许极端11 小时前
消息队列5-RabbitMQ的高级特性和MQ的应用问题与解决方案-事务、消息分发的应用、幂等性保证、顺序性保证、消息积压的解决
分布式·消息队列·rabbitmq
Arva .13 小时前
RabbitMQ
网络·分布式·rabbitmq
DYuW5gBmH13 小时前
Kafka 成功消费消息的完整流程图
分布式·kafka·流程图
小江的记录本16 小时前
【RabbitMQ】RabbitMQ核心知识体系全解(5大核心模块:Exchange类型、消息确认机制、死信队列、延迟队列、镜像队列)
java·前端·分布式·后端·spring·rabbitmq·mvc
电磁脑机17 小时前
基于分布式电磁场的双体闭环脑机接口体系与场域认知底层理论
分布式·目标跟踪·重构·架构·交互
电磁脑机17 小时前
人类分布式大脑架构与文明、技术、安全的底层逻辑——原创大脑架构理论研究
网络·分布式·神经网络·安全·架构
J2虾虾18 小时前
Hadoop入门
大数据·hadoop·分布式
fzb5QsS1p18 小时前
Maomi.MQ 功能强大的 .NET RabbitMQ 消息队列通讯模型框架来了
rabbitmq·.net·ruby