1-8 (6). RabbitMQ高级特性-死信队列和延迟队列

1. 死信队列

在RabbitMQ应该称为死信交换机
DLX:Dead Letter Exchange(死信交换机),当消息称为Dead message后会重新发到死信交换机中。

成为死信的三种情况
(1) 队列长度达到限制
(2) 在消费者手动ack中,basicNack/basicReject,并且不把消息重新放入原队列中,即requeue=false
(3) 原队列存在消息过期设置,消息超时后未被消费

实现方式不难,主要通过给队列设置相关参数即可:x-dead-letter-exchange和x-dead-letter-routing-key
在这里插入图片描述
其实把死信交换机看成正常交换机即可,生产者发送信息到交换机时,在direct和topic模式都需要指定交换机名称和路由key,那么死信交换机也是如此,也就是x-dead-letter-exchange和x-dead-letter-routing-key

这里直接贴图,因为队列设置参数比较简单,就在配置类中创建队列时设置即可。
在这里插入图片描述
需要注意的是成为死信的三种情况,分别测试,即可。

2. 延迟队列

延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间,才会被消费

对应一些具体业务:订单未支付取消,规定时间后触发短信发送等
其实上述业务可以通过定时器实现,但是定时器实现不优雅,因为定时器轮询执行代码,时间间隔设置短影响性能,长则有延迟。

RabbitMQ中并未提供直接延迟队列功能
但是可以通过TTL+死信队列(交换机)完成实现

TTL的已在以往的博客介绍,死信队列就在前文已经描述了
1-8 (5). RabbitMQ高级特性-消费端限流和消息过期时间

博主的坚持 离不开大家评论和点赞,感谢大家支持!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值