RabbitMQ 延迟使命(限时订单) 思路

诗林  金牌会员 | 2024-12-25 21:02:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

一、场景
    我们经常会遇见,一个需求就是,发送一条指令(消息),延迟一段时间执行,好比说常见的淘宝当下了一个订单后,订单支付时间为半个小时,如果半个小时没有支付,则关闭该订单。当然实现的方式有几种,今天来看看rabbitMQ实现的方式。
二、思路:rabbitMQ 如何实现
1:rabbitMQ为每个队列设置消息的超时时间。只要给队列设置x-message-ttl 参数,就设定了该队列全部消息的存活时间,时间单元是毫秒。如果声明队列时指定了死信互换器,则过期消息会成为死信消息
2:需要设置的参数为:


三、原理:上图

1:将延迟队列(queue)在声明的时间设置参数 “ x-dead-letter-exchange ”,“ x-message-ttl “ 分别对应 死信路由器(dlx_exchange) 和 消息过期时间(好比说30分钟)。
2: 一个消息从生产者发送到延迟队列 ,在延迟队列里等候,等候30分钟后,会去绑定的死信路由(dlx_exchange)。通过死信路由的规则,走到死信队列。
3:这时间监听死信队列的消费者就可以接收到消息,消费消息。好比说提交订单限时15分钟的支付时间,时间到后,检察该订单是否支付,如果没有支付,则关闭该订单。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表