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"+"死信队列"的组合方式实现延迟队列的效果.
相关推荐
退役小学生呀8 小时前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
smileNicky8 小时前
Kafka 为什么具有高吞吐量的特性?
分布式·kafka
小白不想白a14 小时前
【Hadoop】HDFS 分布式存储系统
hadoop·分布式·hdfs
随心............15 小时前
Spark面试题
大数据·分布式·spark
Hello.Reader18 小时前
用一根“数据中枢神经”串起业务从事件流到 Apache Kafka
分布式·kafka·apache
在未来等你20 小时前
RabbitMQ面试精讲 Day 27:常见故障排查与分析
中间件·面试·消息队列·rabbitmq
找不到、了21 小时前
常用的分布式ID设计方案
java·分布式
奔跑吧邓邓子1 天前
RabbitMQ深度剖析:从基础到高级进阶实战
rabbitmq·高级进阶
AKAMAI1 天前
在分布式计算区域中通过VPC搭建私有网络
人工智能·分布式·云计算
你我约定有三2 天前
RabbitMQ--消费端异常处理与 Spring Retry
spring·rabbitmq·java-rabbitmq