RabbitMQ延时队列原理讲解

RabbitMQ延时队列原理讲解
漂浮箱RabbitMQ延时消息队列螺母
生物厕所延时队列介绍
延时队列即放置在该队列⾥⾯的消息是不需要⽴即消费的,⽽是等待⼀段时间之后取出消费。
那么,为什么需要延迟消费呢?我们来看以下的场景
⽹上商城下订单后30分钟后没有完成⽀付,取消订单(如:淘宝、去哪⼉⽹)系统创建了预约之后,需要在预约时间到达前⼀⼩时提醒被预约的双⽅参会系统中的业务失败之后,需要重试这些场景都⾮常常见,我们可以思考,⽐如第⼆个需求,系统创建了预约之后,需要在预约时间到达前⼀⼩时提醒被预约的双⽅参会。那么⼀天之中肯定是会有很多个预约的,时间也是不⼀定的,假设现在有1点 2点 3点 三个预约,如何让系统知道在当前时间等于0点 1点 2点给⽤户发送信息呢,是不是需要⼀个轮询,⼀直去查看所有的预约,⽐对当前的系统时间和预约提前⼀⼩时的时间是否相等呢?这样做⾮常浪费资源⽽且轮询的时间间隔不好控制。如果我们使⽤延时消息队列呢,我们在创建时把需要通知的预约放⼊消息中间件中,并且设置该消息的过期时间,等过期时间到达时再取出消费即可。
Rabbitmq实现延时队列⼀般⽽⾔有两种形式:第⼀种⽅式:利⽤两个特性: Time To Live(TTL)、Dead
发热体
Letter Exchanges(DLX)[A 队列过期->转发给B队列]
第⼆种⽅式:利⽤rabbitmq中的插件x-delay-message
TTL DLX实现延时队列
TTL DLX介绍
催化裂解TTL
RabbitMQ可以针对队列设置x-expires(则队列中所有的消息都有相同的过期时间)或者针对Message设置x-message-ttl(对消息进⾏单独设置,每条消息TTL可以不同),来控制消息的⽣存时间,如果超时(两者同时设置以最先到期的时间为准),则消息变为dead letter(死信)
Dead Letter Exchanges(DLX)RabbitMQ的Queue可以配置x-dead-letter-exchange和x-dead-letter-routing-key(可选)两个参数,如果队列内出现了dead letter,则按照这两个参数重新路由转发到指定的队列。x-dead-letter-exchange:出现dead letter之后将dead letter重新发送到指定exchange
山药去皮机x-dead-letter-routing-key:出现dead letter之后将dead letter重新按照指定的routing-key发送

本文发布于:2024-09-22 19:22:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/183102.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:队列   时间   预约   需要   延时   消息
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议