[发明专利]一种基于RabbitMQ处理延迟任务的方法及工具在审
申请号: | 202110789958.3 | 申请日: | 2021-07-13 |
公开(公告)号: | CN113542113A | 公开(公告)日: | 2021-10-22 |
发明(设计)人: | 徐士强;魏金雷;杨继伟 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | H04L12/705 | 分类号: | H04L12/705;H04L12/875 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 冯春连 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rabbitmq 处理 延迟 任务 方法 工具 | ||
1.一种基于RabbitMQ处理延迟任务的方法,其特征在于,该方法包括:
步骤S1、基于RabbitMQ,设置消息有效期TTL;
步骤S2、基于RabbitMQ,配置死信交换机DLX,并基于路由关键字routingKey创建死信队列,实现死信交换机DLX与死信队列的绑定;
步骤S3、针对死信队列,采用策略模式为消息选择消费者;
步骤S4、执行完前三个步骤后,当被消费者处理失败的消息通过延迟交换机发送到延迟队列时,消息在延迟队列到期后通过死信交换机DLX自动转发到与消息携带的路由关键字routingKey相匹配的死信队列中,随后采用策略模式为死信队列的消息选择消费者。
2.根据权利要求1所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,设置消息有效期TTL,即设置消息的存活时间,其涉及队列的存活时间和消息本身的存活时间;
(a)如果消息本身的存活时间大于消息所在队列的存活时间,那么消息本身的存活时间取决于其所在队列的存活时间,
(b)如果消息本身的存活时间小于消息所在队列的存活时间,那么消息到达本身的存活时间后变成死信。
3.根据权利要求2所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,通过在basic.publish方法中加入expiration的参数属性,单位ms,来设置消息有效期TTL,具体设置方案包括以下两种:
(1)直接对AMQP的基础属性设置有效期,即对AMQP.BasicProperties的expiration参数设置值,此时,在消息本身的存活时间小于消息所在队列的存活时间的前提下,消息到达有效期即从所在队列中抹去;
(2)通过方法调用对AMQP的基础属性塞值,实现有效期的设置,此时,在消息本身的存活时间小于消息所在队列的存活时间的前提下,消息即使达到有效期,也不会马上在其所在的队列中抹去,且消息是否达到有效期是在消息即将投递到消费者之前判定的。
4.根据权利要求1所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,配置死信交换机DLX,并基于路由关键字routingKey创建死信队列后,一个消息满足如下任一条件时,不会被自动转发到死信队列中:
(1)一个消息被Consumer拒收了,并且reject方法的参数里requeue是false;
(2)一个消息被Consumer拒收了,且达到了设置的消息有效期TTL;
(3)死信队列的长度限制满了,排在前面的消息会被丢弃或者扔到死信交换机DLX上。
5.根据权利要求1所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,配置死信交换机DLX,并基于不同路由关键字routingKey的组合创建多个死信队列,此时,一个死信交换机DLX绑定多个死信队列。
6.根据权利要求1所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,当死信队列的消息被消费者重新消费时,消息确认机制开启,也就是说,延迟队列向死信队列发送到期消息时,在接受到死信队列的确认信息之前,延迟队列不会删除该条到期消息;如果特殊情况下服务器宕机,死信队列已收到到期消息,但死信队列没有ack,那么同样的到期消息将会同时出现在延迟队列和死信队列中。
7.根据权利要求1所述的一种基于RabbitMQ处理延迟任务的方法,其特征在于,采用策略模式为消息选择消费者,具体操作为:
定义策略接口,使用时实现策略接口的处理方法消费消息;
采用Spring自带的applicationContext,使用时将处理类按照预设的名称与自动注入的处理类对应,拿到对应的处理类对消息进行消费。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110789958.3/1.html,转载请声明来源钻瓜专利网。