RabbitMQ-TTL/死信队列/延迟队列高级特性

文章目录

总结来源B站黑马程序员

TTL

java 复制代码
TTL
  TTL(Time To Live):存活时间/过期时间
  当信息到达存活时间后,还没有被消费,会被自动清除。
  RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间

死信队列

java 复制代码
DLX(Dead Letter Exchange):死信交换机,
  当消息成为Dead Message后,可以被重新发送到另一个交换机,这个交换机就是DLX

死信队列原理:
  当给正常的队列设置过期时间后,在这个过期时间内消息没有被消费的消息会被丢弃,
  但如果这个正常的队列绑定了一个死信交换机,那么队列里过期没有被消费的消息将不会直接被丢弃而是被直接发送给死信交换机
  死信交换机再将过期的信息发送给其他的队列(死信队列),从而过期的消息又可以被重新消费了。

消息成为死信的三种情况

java 复制代码
死信的三种情况
  1.队列消息长度达到限制
  2.消费者拒绝消费消息,basicNack/basicReject并且不把消息重新放入原目标队列,requeue=false
  3.原队列存在消息过期设置,消息到达超时时间未被消费。

队列如何绑定死信交换机

java 复制代码
队列绑定死信交换机
  给对垒设置参数:x-dead-letter-exchage和x-dead-letter-routing-key

延迟队列

java 复制代码
延迟队列:
  即消息进入队列后不会立即被消费,只有到达指定时间(过期时间TTL)后,才会被消费。

需求场景:
  1.下单后,30分钟未支付,取消订单,回滚库存
  2.新用户注册成功7天后,发送消息问候。

RabbitMQ如何实现延迟队列

java 复制代码
RabbitMQ本身并未直接提供延迟队列的功能。
  但我们可以将"TTL"+"死信队列"的组合方式实现延迟队列的效果.
相关推荐
ACP广源盛1392462567317 小时前
DeepSeek‑V4‑Flash 公测@ACP#昇腾 950 国产算力组合落地,国产 PCIe 交换芯片 IX9104 有哪些硬件机会
大数据·数据库·人工智能·分布式·单片机·嵌入式硬件·microsoft
玉鸯18 小时前
多 Agent 并行时如何保证状态一致性?
分布式·python·agent
CodeHackerBhx19 小时前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
城管不管1 天前
RabbitMQ死信队列
java·分布式·ai·面试·职场和发展·rabbitmq·agent
城管不管1 天前
rabbitmq如何保证消息不丢失?解决方案又是什么?
开发语言·ai·面试·职场和发展·rabbitmq·php·agent
2601_956456341 天前
从研发到交付:嗨动视觉分布式KVM坐席系统的靠谱逻辑
分布式
小O的算法实验室1 天前
AAAI-26,解空间变换引导的节能分布式异构柔性作业车间协同进化
分布式
六点_dn1 天前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
ai_coder_ai2 天前
分布式缓存架构设计与实践
分布式·缓存
纯真时光2 天前
微服务分布式事务 -- XA,AT,TCC模式
分布式·微服务