首页> 中国专利> 一种基于RabbitMQ的定时任务自动生产和消费的方法

一种基于RabbitMQ的定时任务自动生产和消费的方法

摘要

本发明公开了一种基于RabbitMQ的定时任务自动生产和消费的方法,属于计算机技术领域。一种基于RabbitMQ的定时任务自动生产和消费的方法,包括以下步骤:S1,解析任务调度规则,设置消息延迟属性;S2,判断、创建延迟交换机;S3,消息投递至延迟交换机;S4,消息路由至任务队列;S5,任务执行器消费;S6,若失败,判断是否重试执行;本发明,能够减少系统资源浪费、提高性能,大幅度提高任务执行时效性;同时,通过消息可靠性保证了任务执行的可靠性;任务执行异步化和执行回调策略,使任务执行更加提升了系统吞吐量和灵活度。

著录项

  • 公开/公告号CN114840320A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利权人 点都互联科技有限公司;

    申请/专利号CN202210523111.5

  • 发明设计人 李宗奎;

    申请日2022-05-14

  • 分类号G06F9/48(2006.01);

  • 代理机构郑州智多谋知识产权代理事务所(特殊普通合伙) 41170;

  • 代理人尚秘

  • 地址 450000 河南省郑州市郑东新区平安大道与湖心岛路交叉口博雅广场1号楼5层502号

  • 入库时间 2023-06-19 16:14:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-19

    实质审查的生效 IPC(主分类):G06F 9/48 专利申请号:2022105231115 申请日:20220514

    实质审查的生效

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种基于RabbitMQ的定时任务自动生产和消费的方法。

背景技术

在软件开发中经常有需要精确到分钟,但没有规律的队列任务生产和消费的业务需求和技术开发。因为没有任何规律,任务的创建和消费时间都是任意的,所以需要使用内部或者外部定时器;在一定时间段内,如每分钟,核查是否存在需要创建或消费的任务。常见的,在日常软件开发过程中,常常会遇到一些场景,需要在某个事件发生之后的指定时间点完成某一项任务,或者是每隔一定周期处理一次某任务。如:当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存;如何定期检查处于退款状态的订单是否已经退款成功,等等。

常见的技术方案为设置定时器。定时器的优势是处理有规律任务的生产和消费;对于没有规律的任务处理,只能以要求的最小单位时间精度,去规律的检查;相应的导致,对于时间精度要求到分钟、甚至更低级别的任务调度,极大的浪费了计算资源,同时还会影响外部业务的计算负载。

为解决以上问题,最简单直接的办法是定时扫表;通过使用定时任务,一直轮询查询数据库来判断是否有任务需要执行。也就是说,不管怎样都需要先查询数据库。对于对时间准确要求比较高的任务,需要每秒查询一次;小系统倒是无所谓,如果系统本身就大、数据较多、时效性较强的情况下,继续使用轮询方式,就不大现实了。且很难保证时效性;同时,会给数据库带来很大压力,影响其它业务正常执行。

因此,需要研发一种定时任务的处理方法,以解决现有技术中使用传统定时任务轮询数据,导致时效性不稳定,以及资源消耗较多造成的数据库压力大、性能降低等问题。

发明内容

本发明的目的是为了解决现有技术中,传统定时任务轮询数据,时效不稳定、数据库压力大、性能降低的问题,而提出的一种基于RabbitMQ的定时任务自动生产和消费的方法。

为了实现上述目的,本发明采用了如下技术方案:

一种基于RabbitMQ的定时任务自动生产和消费的方法,包括以下步骤:

S1,解析任务调度规则,设置消息延迟属性;

S2,判断、创建延迟交换机;

S3,消息投递至延迟交换机;

S4,消息路由至任务队列;

S5,任务执行器消费;

S6,若失败,判断是否重试执行。

优选的:

在步骤S1中,根据设定的任务调度规则,获得对应该任务调度消息发布的延迟时间算法,设置消息延迟属性;

在步骤S2-S4中,根据任务调度规则,自动生成任务消息路由算法;

在步骤S5中,任务执行器自动扫描绑定算法;

在步骤S6中,根据任务调度规则设定的延迟消息投递消费可靠性算法。

优选的,在步骤S1中:

延迟时间算法,通过解析任务调度规则中的执行时间,动态计算未来时间,设置消息延迟属性。

优选的:

在步骤S2中:

消息路由算法,通过解析任务调度规则中的任务执行主题,判断是否存在对于该任务执行的延迟交换机;

若存在,则不需要创建;若不存在,则自动创建延迟交换机;

在步骤S3中:

基于延迟时间算法,将消息投递至对应的延迟交换机;

在步骤S4中:

到达任务执行时间时,交换机将消息路由到对应的任务队列中,供任务执行器消费。

优选的,在步骤S5中:

通过扫描解析任务执行器配置,动态创建任务执行队列、绑定任务执行器,自动执行任务。

优选的,在步骤S5中:

若消息消费成功,则结束任务调度;否则,跳转至步骤S6。

优选的,在步骤S6中:

根据延迟消息消费可靠性算法,来判断任务是否重试执行。

优选的,在步骤S6中:

消息可靠性算法,通过消息持久化、发布确认、手动应答的方式来实现消息持久化;

默认所有消息、队列、交换机设置为异步持久化,以此来保证服务端消息不丢失。

优选的,在步骤S6中:

通过解析任务调度规则,来定义发布确认规则、手动应答规则中的重试策略;

其中,任务消息发布失败和任务执行失败后,匹配完毕重试次数;到达指定次数后,将消息持久化落盘。

优选的,所述任务调度规则,包括:

1)、任务执行时间;

2)、任务执行主题;

3)、任务延迟消息;

4)、任务失败重试次数;

5)、任务是否持久化。

与现有技术相比,本发明提供了一种基于RabbitMQ的定时任务自动生产和消费的方法,具备以下有益效果。

1、本发明,用延迟队列实现的定时任务的自动生产和消费策略,来代替传统定时任务执行;能够减少系统资源浪费、提高性能,大幅度提高任务执行时效性。

2、本发明,通过消息可靠性保证了任务执行的可靠性;任务执行异步化和执行回调策略,使任务执行更加提升了系统吞吐量和灵活度。

本发明的其他优点、目标和特征,在某种程度上将在随后的说明书中进行阐述;并且在某种程度上,基于对下文的考察研究,对本领域技术人员而言将是显而易见的;或者,可以从本发明的实践中得到教导。

附图说明

图1为本发明的流程示意图。

图2为延迟消息生产消费流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

参照图1-2,一种基于RabbitMQ的定时任务自动生产和消费的方法,包括以下步骤:

S1,解析任务调度规则,设置消息延迟属性;

S2,判断、创建延迟交换机;

S3,消息投递至延迟交换机;

S4,消息路由至任务队列;

S5,任务执行器消费;

S6,若失败,判断是否重试执行。

其中,任务调度规则,包括以下信息:

1)、任务执行时间;

2)、任务执行主题;

3)、任务延迟消息;

4)、任务失败重试次数;

5)、任务是否持久化。

在步骤S1中,根据设定的任务调度规则,获得对应该任务调度消息发布的延迟时间算法,设置消息延迟属性。

在步骤S2-S4中,根据任务调度规则,自动生成任务消息路由算法。

在步骤S5中,任务执行器自动扫描绑定算法。

在步骤S6中,根据任务调度规则设定的延迟消息投递消费可靠性算法。

具体的,在步骤S1中:

延迟时间算法,通过解析任务调度规则中的执行时间,动态计算未来时间,将其绑定到任务执行消息属性上,设置消息延迟属性。

在步骤S2中:

消息路由算法,通过解析任务调度规则中的任务执行主题,判断是否存在对于该任务执行的延迟交换机。

若存在,则不需要创建;若不存在,则自动创建延迟交换机。

在步骤S3中:

基于延迟时间算法,将消息投递至对应的延迟交换机。

在步骤S4中:

到达任务执行时间时,交换机将消息路由到对应的任务队列中,供任务执行器消费。

在步骤S5中:

通过扫描解析任务执行器配置,动态创建任务执行队列、绑定任务执行器,自动执行任务。

若消息消费成功,则结束任务调度;否则,跳转至步骤S6。

在步骤S6中:

根据延迟消息消费可靠性算法,来判断任务是否重试执行。

消息可靠性算法,通过消息持久化、发布确认、手动应答的方式来实现消息持久化。

默认所有消息、队列、交换机设置为异步持久化,以此来保证服务端消息不丢失。

通过解析任务调度规则,来定义发布确认规则、手动应答规则中的重试策略。

其中,任务消息发布失败和任务执行失败后,匹配完毕重试次数,到达指定次数后将消息持久化落盘。

以下,以某一项目为例。

在该项目中,基于30天周期内,任意时间的10000次任务:

原始方案累计计算:43200次;

本申请所提供的新方案累计计算:10720次。

可见,极大的节省计算资源。

本发明,通过采用延迟队列实现的定时任务的自动生产和消费策略,来代替传统定时任务执行;能够减少系统资源浪费、提高性能,大幅度提高任务执行时效性;同时,通过消息可靠性保证了任务执行的可靠性;任务执行异步化和执行回调策略,使任务执行更加提升了系统吞吐量和灵活度。

本发明中,使用主流消息中间件RabbitMQ的延时消息功能,完成定时任务的消费。基于topic的任务消息路由,无需关注队列、交换机等配置,系统内部自动声明队列、交换机,以及绑定消费关系,只需通过指定topic即可完成消息的发送与消费。定时消息转化,自动转化、解析定时任务配置,绑定到消息延迟属性。任务执行器自动扫描绑定,任务执行器,无需显示调用,每当订阅到任务执行消息,自动消费消息,进行逻辑执行。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号