千家信息网

rabbitMq中延时机制的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关rabbitMq中延时机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一: TTL机制TTL机制其实就是给队列 或者 消息设
千家信息网最后更新 2026年11月03日rabbitMq中延时机制的示例分析

这篇文章将为大家详细讲解有关rabbitMq中延时机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一: TTL机制

TTL机制其实就是给队列 或者 消息设置过期时间,因为中间件的容量和堆积能力有限,有一些消息长时间消费不了,可使用过期来删除。 用法如下:

  1. 通过Queue属性设置,队列中所有消息都有相同的过期时间-单位毫秒。

  2. 对消息自身进行单独设置,每条消息的TTL 可以不同。

**二:死信队列 **

死信队列用来存放普通队列中不能正常消费的消息,如超时的,拒绝的,返回nack的等…

普通队列绑定了死信交换机就是死信队列; 而死信交换机也是普通交换机,只是在别的队列声明属性中,有个属性叫做:x-dead-letter-exchange,它的value指定的交换机,就成了死信交换机。 具体如图示:

当消息过期后,就会根据指定的routingKey发送到交换机,最终根据绑定key路由到死信队列。

三:应用场景

明白以上的TTL和死信队列后,我们可以做什么呢? 比如,电商系统,用户下了一个订单后需要支付,支付时间为15分钟,超时后将订单的未支付改为已取消,该怎么做呢?

做法一: 使用定时任务不断去扫描数据库中未支付的订单,看创建时间和当前时间是否大于15分钟,如果是改为已取消。

问题来了: 如果订单表数据量很大,频繁扫描会带来性能问题。 如果不够频繁,误差又会很大,不能及时更新状态。

做法二: 比如TTL和死信队列,生成订单后往mq发送一条消息(不去消费它),设置15钟过期,15分钟后发送到死信队列,监听死信队列的消费端拿到消息后,去查询订单,如果还是未支付,则改为已取消。

四:延迟队列

延迟队列其实就是TTL和死信队列的变相,只不过上面是把消息存在队列里实现过期,延迟队列是基于插件rabbitmq_delayed_message_exchange,把消息先发到x-delayed-message exchange延时交换机,到时间后再发送到队列。

此插件需要去下载,用法这里不作描述了。

关于"rabbitMq中延时机制的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

队列 死信 消息 交换机 订单 时间 支付 机制 消费 普通 就是 属性 篇文章 延迟 示例 分析 很大 频繁 做法 插件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技学校 涨乐互联网科技 互联网科技垄断 互联网科技论文 奇酷互联网络科技公司 互联网高科技企业 互联网 新科技 撒么互联网科技公司 青岛中康互联网医疗科技有限公司 互联网科技公司营业执照怎么办理 无锡工业互联网科技有限公司 上海互联网科技公司ppt 互联网与数字科技关系 信承诺互联网科技有限公司 珠海东科互联网科技有限公司 中国新注册互联网科技 互联网科技平台产品运营 版纳互联网科技选哪家 北京品多多互联网科技有限公司 宁波允成互联网科技有限公司 国智互联网科技 互联网金融科技平台 互联网科技公司有哪些 成都仁贤领冠互联网科技有限公司 汉立互联网科技有限公司联系电话 福州新华互联网科技学校 知乎 互联网还是高科技吗 语蝶互联网科技有限公司 中国科技创新与世界互联网大会 互联网科技如何创业
0