[发明专利]一种基于RabbitMQ处理延迟任务的方法及工具在审
申请号: | 202110789958.3 | 申请日: | 2021-07-13 |
公开(公告)号: | CN113542113A | 公开(公告)日: | 2021-10-22 |
发明(设计)人: | 徐士强;魏金雷;杨继伟 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | H04L12/705 | 分类号: | H04L12/705;H04L12/875 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 冯春连 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rabbitmq 处理 延迟 任务 方法 工具 | ||
本发明公开一种基于RabbitMQ处理延迟任务的方法,涉及消息处理技术领域,该方法包括:基于RabbitMQ,设置消息有效期TTL;基于RabbitMQ,配置死信交换机DLX,并基于路由关键字routingKey创建死信队列,实现死信交换机DLX与死信队列的绑定;针对死信队列,采用策略模式为消息选择消费者;当被消费者处理失败的消息通过延迟交换机发送到延迟队列时,消息在延迟队列到期后通过死信交换机DLX自动转发到与消息携带的路由关键字routingKey相匹配的死信队列中,随后采用策略模式为死信队列的消息选择消费者,实现延迟消息的及时处理。本发明还公开一种基于RabbitMQ处理延迟任务的工具,其通过消息声明模块和消息消费模块实现前述方法。
技术领域
本发明涉及消息处理技术领域,具体的说是一种基于RabbitMQ处理延迟任务的方法及工具。
背景技术
在日常开发中,常常会遇到几个场景,物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时。订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单,上述类似的需求是我们经常会遇见的问题。最常用的方法是定期轮训数据库,设置状态。在数据量小的时候并没有什么大的问题,但是数据量一大轮训数据库的方式就会变得特别耗资源。当面对千万级、上亿级数据量时,本身写入的IO就比较高,导致长时间查询或者根本就查不出来,更别说分库分表以后了。除此之外,还有优先级队列,基于优先级队列的JDK延迟队列,时间轮等方式。但如果系统的架构中本身就有RabbitMQ的话,那么选择RabbitMQ来实现类似的功能也是一种选择。
发明内容
本发明针对消息被消费者处理失败后由延迟队列再次发送至普通队列进行重复处理的情况,提供一种基于RabbitMQ处理延迟任务的方法及工具。
首先,本发明的一种基于RabbitMQ处理延迟任务的方法,解决上述技术问题采用的技术方案如下:
一种基于RabbitMQ处理延迟任务的方法,该方法包括:
步骤S1、基于RabbitMQ,设置消息有效期TTL;
步骤S2、基于RabbitMQ,配置死信交换机DLX,并基于路由关键字routingKey创建死信队列,实现死信交换机DLX与死信队列的绑定;
步骤S3、针对死信队列,采用策略模式为消息选择消费者;
步骤S4、执行完前三个步骤后,当被消费者处理失败的消息通过延迟交换机发送到延迟队列时,消息在延迟队列到期后通过死信交换机DLX自动转发到与消息携带的路由关键字routingKey相匹配的死信队列中,随后采用策略模式为死信队列的消息选择消费者。
执行步骤S1,设置消息有效期TTL,即设置消息的存活时间,其涉及队列的存活时间和消息本身的存活时间;
(a)如果消息本身的存活时间大于消息所在队列的存活时间,那么消息本身的存活时间取决于其所在队列的存活时间,
(b)如果消息本身的存活时间小于消息所在队列的存活时间,那么消息到达本身的存活时间后变成死信。
进一步的,通过在basic.publish方法中加入expiration的参数属性,单位ms,来设置消息有效期TTL,具体设置方案包括以下两种:
(1)直接对AMQP的基础属性设置有效期,即对AMQP.BasicProperties的expiration参数设置值,此时,在消息本身的存活时间小于消息所在队列的存活时间的前提下,消息到达有效期即从所在队列中抹去;
(2)通过方法调用对AMQP的基础属性塞值,实现有效期的设置,此时,在消息本身的存活时间小于消息所在队列的存活时间的前提下,消息即使达到有效期,也不会马上在其所在的队列中抹去,且消息是否达到有效期是在消息即将投递到消费者之前判定的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110789958.3/2.html,转载请声明来源钻瓜专利网。