延时任务处理方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:35265754 阅读:18 留言:0更新日期:2022-10-19 10:27
本申请实施例属于云技术领域,涉及一种延时任务处理方法,包括解析接收的延时任务请求得到推送时间;确定第一延时任务和第二延时任务,将第一延时任务存储至时间轮,将第二延时任务存储到关系数据库以得到任务数据表;将任务数据表同步至大数据;筛选任务数据表中的任务消息得到第三延时任务,并将第三延时任务存储至时间轮;当时间轮驱动至当前时间槽,则匹配与当前时间槽对应的到期的延时任务,组成延时任务列表;将延时任务列表推送至消息中间件。本申请还提供一种延时任务处理装置、计算机设备及存储介质。此外,本申请还涉及区块链技术,延时任务列表可存储于区块链中。本申请可以实现动态设定延时时间,支持高精度触发,不受时间跨度限制。不受时间跨度限制。不受时间跨度限制。

【技术实现步骤摘要】
延时任务处理方法、装置、计算机设备及存储介质


[0001]本申请涉及消息处理
,尤其涉及一种延时任务处理方法、装置、计算机设备及存储介质。

技术介绍

[0002]在日常生活中,经常会有涉及需要消息延时发送的场景,这种消息可以称为延时任务。这里,所谓“延时发送”指生产者产生消息后,消费者并不能立即获得消息,而是等待指定时长后(可以是秒级别,也可以是小时级别,也可以是天级别),消费者才能获得这个消息并进行相应的处理。
[0003]业界现有的支持延时任务的产品如Rocket MQ,仅支持2小时内的延时任务,而且支持的精度有限,必须要按照模版中固定的1秒、5秒、10秒等去延时;一些开源的分布式定时任务调度框架如Elastic

Job,也仅支持按cron表达式规范在固定时间点(需要提前指定触发时间点)触发。而有些业务场景,需要按某种业务规则计算出触发时间点,触发时间点无法提前确定;需要在具体的某一秒、而且可能在几天、几个月、几年之后触发,目前相关技术很难实现上述场景。

技术实现思路

[0004]本申请实施例的目的在于提出一种延时任务处理方法、装置、计算机设备及存储介质,以解决相关技术中延时任务触发难以应用于触发时间点无法提前确定、高精度以及长时间跨度的业务场景的技术问题。
[0005]为了解决上述技术问题,本申请实施例提供一种延时任务处理方法,采用了如下所述的技术方案:
[0006]接收消息中间件的延时任务请求,解析所述延时任务请求得到推送时间;
[0007]根据所述推送时间确定第一延时任务和第二延时任务,将所述第一延时任务存储至时间轮,将所述第二延时任务存储到关系数据库以得到任务数据表;
[0008]将所述任务数据表同步至大数据,得到同步数据;
[0009]通过分区方法对所述同步数据中的延时任务进行筛选,得到所述第三延时任务,并将所述第三延时任务存储至所述时间轮;
[0010]当所述时间轮驱动至当前时间槽,则匹配所述时间轮中与所述当前时间槽对应的当前触发的延时任务,组成延时任务列表;
[0011]将所述延时任务列表推送至所述消息中间件,以使所述延时任务列表中的延时任务被消费。
[0012]进一步的,所述将所述第一延时任务存储至时间轮的步骤包括:
[0013]根据所述第一延时任务的推送时间确定所述第一延时任务对应的目标时间槽;
[0014]将所述第一延时任务存储至所述时间轮对应的目标时间槽中。
[0015]进一步的,在所述将所述第一延时任务存储至时间轮的步骤之前还包括:
[0016]根据循环周期在Redis中创建预设数量的时间槽,并通过键值形式创建指针;
[0017]基于所述时间槽和所述指针得到时间轮。
[0018]进一步的,所述将所述第二延时任务存储到关系数据库以得到任务数据表的步骤包括:
[0019]提取所述第二延时任务的关键信息;
[0020]将所述关键信息写入所述关系数据库的数据表对应的关键字段处,得到任务数据表。
[0021]进一步的,所述将所述任务数据表同步至大数据的步骤包括:
[0022]使用所述大数据计算框架从所述关系数据库获取任务数据表;
[0023]将所述任务数据表存入大数据存储文件进行同步。
[0024]进一步的,所述通过分区方法对所述任务数据表中的延时任务进行筛选,得到所述第三延时任务的步骤包括:
[0025]基于所述推送时间,利用所述分区方法对所述大数据存储文件中的任务数据表进行筛选;
[0026]筛选出符合条件的延时任务作为第三延时任务。
[0027]进一步的,所述匹配所述时间轮中与所述当前时间槽对应的当前触发的延时任务的步骤包括:
[0028]根据所述第一延时任务的推送时间和当前时间,计算得到时间间距;
[0029]基于所述时间轮的循环周期和所述时间间距,确定当前触发的延时任务。
[0030]为了解决上述技术问题,本申请实施例还提供一种延时任务处理装置,采用了如下所述的技术方案:
[0031]接收模块,用于接收消息中间件的延时任务请求,解析所述延时任务请求得到推送时间;
[0032]存储模块,用于根据所述推送时间确定第一延时任务和第二延时任务,将所述第一延时任务存储至时间轮,将所述第二延时任务存储到关系数据库以得到任务数据表;
[0033]同步模块,用于将所述任务数据表同步至大数据,得到同步数据;
[0034]筛选模块,用于通过分区方法对所述同步数据中的延时任务进行筛选,得到所述第三延时任务,并将所述第三延时任务存储至所述时间轮;
[0035]匹配模块,用于当所述时间轮驱动至当前时间槽,则匹配所述时间轮中与所述当前时间槽对应的当前触发的延时任务,组成延时任务列表;
[0036]推送模块,用于将所述延时任务列表推送至所述消息中间件,以使所述延时任务列表中的延时任务被消费。
[0037]为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
[0038]该计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的延时任务处理方法的步骤。
[0039]为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
[0040]所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理
器执行时实现如上所述的延时任务处理方法的步骤。
[0041]与现有技术相比,本申请实施例主要有以下有益效果:
[0042]本申请通过接收消息中间件的延时任务请求,解析延时任务请求得到推送时间;根据推送时间确定第一延时任务和第二延时任务,将第一延时任务存储至时间轮,将第二延时任务存储到关系数据库以得到任务数据表;将任务数据表同步至大数据,得到同步数据;通过分区方法对同步数据中的任务消息进行筛选,得到第三延时任务,并将第三延时任务存储至时间轮;当时间轮驱动至当前时间槽,则匹配时间轮中与当前时间槽对应的到期的延时任务,组成延时任务列表;将延时任务列表推送至消息中间件,以使延时任务列表中的延时任务被消费;本申请通过时间轮和关系型数据库分别进行延时任务存储,存储容量大,根据延时任务的推送时间进行延时任务添加,可以实现动态设定延时时间,无需提前指定延时时间,通过时间轮推送可以精确到秒级,支持高精度触发,此外,不受时间跨度限制。
附图说明
[0043]为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1是本申请可以应用于其中的示例性系统架构图;
[0045]图2是根据本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种延时任务处理方法,其特征在于,包括下述步骤:接收消息中间件的延时任务请求,解析所述延时任务请求得到推送时间;根据所述推送时间确定第一延时任务和第二延时任务,将所述第一延时任务存储至时间轮,将所述第二延时任务存储到关系数据库以得到任务数据表;将所述任务数据表同步至大数据,得到同步数据;通过分区方法对所述同步数据中的延时任务进行筛选,得到所述第三延时任务,并将所述第三延时任务存储至所述时间轮;当所述时间轮驱动至当前时间槽,则匹配所述时间轮中与所述当前时间槽对应的当前触发的延时任务,组成延时任务列表;将所述延时任务列表推送至所述消息中间件,以使所述延时任务列表中的延时任务被消费。2.根据权利要求1所述的延时任务处理方法,其特征在于,所述将所述第一延时任务存储至时间轮的步骤包括:根据所述第一延时任务的推送时间确定所述第一延时任务对应的目标时间槽;将所述第一延时任务存储至所述时间轮对应的目标时间槽中。3.根据权利要求1所述的延时任务处理方法,其特征在于,在所述将所述第一延时任务存储至时间轮的步骤之前还包括:根据循环周期在Redis中创建预设数量的时间槽,并通过键值形式创建指针;基于所述时间槽和所述指针得到时间轮。4.根据权利要求1所述的延时任务处理方法,其特征在于,所述将所述第二延时任务存储到关系数据库以得到任务数据表的步骤包括:提取所述第二延时任务的关键信息;将所述关键信息写入所述关系数据库的数据表对应的关键字段处,得到任务数据表。5.根据权利要求1所述的延时任务处理方法,其特征在于,所述将所述任务数据表同步至大数据的步骤包括:使用所述大数据计算框架从所述关系数据库获取任务数据表;将所述任务数据表存入大数据存储文件进行同步。6.根据权利要求5所述的延时任务处理方法,其特征...

【专利技术属性】
技术研发人员:蒋再武
申请(专利权)人:中国平安财产保险股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1