RabbitMQ - [高级] 延迟队列

回到顶部(go to top)

一、延迟队列概念

 

回到顶部(go to top)

二、延迟队列使用场景

 

 

 

 

 

回到顶部(go to top)

三、RabbitMQ 中的 TTL 

TTL 是什么呢? TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有 消息的最大存活时间,单位是毫秒。

换句话说,如果一条消息设置了 TTL 属性或者进入了设置TTL 属性的队列,那么这 条消息如果在TTL 设置的时间内没有被消费,则会成为"死信"。如果同时配置了队列的TTL 和消息的 TTL,那么较小的那个值将会被使用,有两种方式设置 TTL。

 

 

3.1 队列设置TTL

 

 

3.2 消息设置TTL

 

3.3 两者的区别

  • 如果设置了队列的 TTL 属性,那么一旦消息过期,就会被队列丢弃(如果配置了死信队列被丢到死信队 列中)。
  • 如果设置了消息的 TTL 属性,消息即使过期,也不一定会被马上丢弃,因为消息是否过期是在即将投递到消费者之前判定的,如果当前队列有严重的消息积压情况,则已过期的消息也许还能存活较长时间。
  • 如果不设置 TTL,表示消息永远不会过期。
  • 如果将 TTL 设置为 0,则表示除非此时可以 直接投递该消息到消费者,否则该消息将会被丢弃。

 

 

回到顶部(go to top)

四、延迟队列实战--设置队列TTL(基于死信队列)

4.1 重点

1. 这里集成了springboot,原本在生产者/消费者里定义的交换机和队列,会改在@configuration文件里直接声明注入好

2. “交换机”-->“队列”方向的绑定,是需要用到Binding类来绑的

  

3. “队列”-->“(死信)交换机”方向的绑定,是直接使用参数在定义队列时绑定的

 

4.2 具体代码

配置文件类代码

 

 

 

生产者

 

 

 

消费者 

 

 

测试

 

 

4.3 存在的问题

 

 

回到顶部(go to top)

五、延迟队列实战--设置消息TTL(基于死信队列)

5.1 重点

 

 

 

5.2 具体代码

配置类代码

 

 

消费者

 

 

测试

 

 

 

 

5.3 存在的问题

 

 

回到顶部(go to top)

六、延迟队列实战--交换机TTL(基于插件*最优)

6.1 基于死信队列 vs 基于插件

 

 

 

 

6.2 插件安装

 

 

 

6.3 具体代码

 

 

配置文件类代码

 

 

生产者

 

 

 

消费者

 

 

测试

 

posted on   frank_cui  阅读(86)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示