延迟消息队列实现方法以及系统技术方案

技术编号:23890074 阅读:45 留言:0更新日期:2020-04-22 06:06
本发明专利技术公开了一种延迟消息队列实现方法以及系统,包括:S101、在缓存服务器上预先创建一有序集合;S102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;S103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;S104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;S105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;S106、消息队列收到消息后,将消息投递至定时任务执行模块;S107、定时任务执行模块启动线程进行定时任务的执行。

【技术实现步骤摘要】
延迟消息队列实现方法以及系统
本专利技术涉及一种延迟消息队列实现方法以及系统。
技术介绍
当前,在电商、保险等业务场景下,会存在一系列的定时任务,例如:订单创建成功后5分钟内没支付则取消订单,用户收货完成7天后自动好评等。在用户多、并发高的情况下,这类定时任务会非常非常多。对于定时任务的执行,传统的方法一般是将任务放到数据库中,然后通过任务执行模块定时轮询数据库的方式取出相应的定时任务进行执行。但是,在高并发、海量用户的情况下,这种方式存在执行效率低,数据库压力大等缺点,从而导致定时任务可能不会按照预期执行。同时,有一些消息队列也提供了定时发送消息的功能,但是由于这些消息队列受限于性能等方面的影响,仅支持固定几个级别的延迟消息,并不支持任意时间的消息。
技术实现思路
针对上述现有技术的不足,本专利技术所要解决的技术问题是:提供一种能够支持任意级别、时间的延迟消息的延迟消息队列实现方法以及系统。为解决上述技术问题,本专利技术采用的一个技术方案是:提供一种延迟消息队列实现方法,包括:S101、在缓存服务器上预先创建一有序集合;S102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;S103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;S104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;S105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;S106、消息队列收到消息后,将消息投递至定时任务执行模块;S107、定时任务执行模块启动线程进行定时任务的执行。进一步的,在S101步骤中,系统启动时,在缓存服务器上预先创建一以字符串TASK_MSGS为KEY的有序集合。进一步的,在S103步骤中,所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。进一步的,还包括:所述业务流程发送删除延迟消息至所述延迟消息模块;所述延迟消息模块将所述有序集合中对应的延迟消息删除。为解决上述技术问题,本专利技术采用的另一个技术方案是:提供一种延迟消息队列实现系统,包括:缓存服务器,存储有创建的有序集合,其中,在业务流程中会向该有序集合中插入延迟消息和删除延迟消息;所述业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;所述延迟消息模块,用于将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;还用于每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据,还用于当获取到所述业务数据时,将所述获取到的业务数据进行处理并发送至消息队列中,所述消息队列接收到消息后,将消息投递至定时任务执行模块;所述定时任务执行模块,用于接收到来自于所述消息队列的消息后,启动线程以执行指定的业务逻辑。进一步的,所述服务器存储有一以字符串TASK_MSGS为KEY的有序集合。进一步的,所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。进一步的,所述业务流程还发送删除延迟消息至所述延迟消息模块;所述延迟消息模块将所述有序集合中对应的延迟消息删除。本专利技术的延迟消息队列实现方法及系统,能够支持任意时间、级别的延迟消息。实现了从业务保存消息到定时执行消息的业务闭环。通过RocketMQ的海量吞吐能力,不再进行定时任务的调度即可轻松支持海量的定时任务的定时执行。节约了时间、成本、降低了服杂度。附图说明图1本专利技术延迟消息队列实现方法的工作流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参见图1,本专利技术延迟消息队列实现方法包括以下步骤:S101、在缓存服务器上创建一有序集合,其中,在业务流程中会向该有序集合中插入数据和删除数据;本步骤中,当实现延迟队列这一系统启动时,在缓存服务器上创建一以字符串TASK_MSGS为KEY的zset有序集合。具体的,每次系统启动时均会检查缓存服务器上是否有TASK_MSGS这一有序集合,若没有就创建该有序集合,若有则不用创建。所述业务流程可以是具体的应用流程,指具体的业务,包括但不限于购物、支付、查询订单、注册等等。S102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;所述业务流程调用延迟消息模块的接口以将延迟消息发送至所述延迟消息模块,延迟消息模块将请求中的数据保存到集合中,然后向业务流程返回成功,后续的消息投递由延迟消息模块负责。S103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;本步骤中,所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器的排序规则为:将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。S104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;本步骤中,所述延迟消息模块采用轮询的方式检查缓存服务器上的消息是否已到发送时间,若已到发送时间,则进入S104步骤,否则睡眠所述预定时间(例如1秒钟)后再继续检查。S105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;S106、消息队列收到消息后,将消息投递至定时任务执行模块;S107定时任务执行模块启动线程进行定时任务的执行。通过如上步骤,实现了从业务保存消息到定时执行消息的业务闭环。通过RocketMQ的海量吞吐能力,不再进行定时任务的调度即可轻松支持海量的定时任务的定时执行。节约了时间、成本、降低了服杂度。本专利技术还公开了一种延迟消息队列实现系统,包括:缓存服务器,存储有创建的有序集合,其中,在业务流程中会向该有序集合中插入数据和删除数据;所述有序集合是以字符串TASK_MSGS为KEY的有序集合的zset有序集合。所述缓存服务器可以将消息按照实际需要发送的时间进行排序,对于距离发送时间很近的消息,可以通过轮询的方式取出来,然后将消息发送出去。所述业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;所述延迟消息模块,用于将本文档来自技高网...

【技术保护点】
1.一种延迟消息队列实现方法,包括:/nS101、在缓存服务器上预先创建一有序集合;/nS102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;/nS103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;/nS104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;/nS105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;/nS106、消息队列收到消息后,将消息投递至定时任务执行模块;/nS107、定时任务执行模块启动线程进行定时任务的执行。/n

【技术特征摘要】
1.一种延迟消息队列实现方法,包括:
S101、在缓存服务器上预先创建一有序集合;
S102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;
S103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;
S104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;
S105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;
S106、消息队列收到消息后,将消息投递至定时任务执行模块;
S107、定时任务执行模块启动线程进行定时任务的执行。


2.如权利要求1所述的延迟消息队列实现方法,其特征在于:
在S101步骤中,系统启动时,在缓存服务器上预先创建一以字符串TASK_MSGS为KEY的有序集合。


3.如权利要求2所述的延迟消息队列实现方法,其特征在于:
在S103步骤中,所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。


4.如权利要求1至3中任一项所述的延迟消息队列实现方法,其特征在于,还包括:
所述业务流程发送删除延迟消息至所述延迟消息模块;
所述延迟消息模块将所...

【专利技术属性】
技术研发人员:佘万卫
申请(专利权)人:云南优鸟科技有限公司
类型:发明
国别省市:云南;53

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

1