网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

rabbitMq中延时机制的示例分析

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

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册虚拟主机、营销软件、网站建设、吉安网站维护、网站推广。

一: TTL机制

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

  1. 通过Queue属性设置,队列中所有消息都有相同的过期时间-单位毫秒。 rabbitMq中延时机制的示例分析

  2. 对消息自身进行单独设置,每条消息的TTL 可以不同。 rabbitMq中延时机制的示例分析

**二:死信队列 **

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

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

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

三:应用场景

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

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

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

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

四:延迟队列

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

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

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


网站题目:rabbitMq中延时机制的示例分析
标题路径:http://bjjierui.cn/article/igdohs.html

其他资讯