CN111045806A - 延迟消息队列实现方法以及系统 - Google Patents

延迟消息队列实现方法以及系统 Download PDF

Info

Publication number
CN111045806A
CN111045806A CN201911295794.8A CN201911295794A CN111045806A CN 111045806 A CN111045806 A CN 111045806A CN 201911295794 A CN201911295794 A CN 201911295794A CN 111045806 A CN111045806 A CN 111045806A
Authority
CN
China
Prior art keywords
message
delay
cache server
ordered set
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201911295794.8A
Other languages
English (en)
Inventor
佘万卫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan Youniao Technology Co Ltd
Original Assignee
Yunnan Youniao Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yunnan Youniao Technology Co Ltd filed Critical Yunnan Youniao Technology Co Ltd
Priority to CN201911295794.8A priority Critical patent/CN111045806A/zh
Publication of CN111045806A publication Critical patent/CN111045806A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

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

Description

延迟消息队列实现方法以及系统
技术领域
本发明涉及一种延迟消息队列实现方法以及系统。
背景技术
当前,在电商、保险等业务场景下,会存在一系列的定时任务,例如:订单创建成功后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有序集合。所述缓存服务器可以将消息按照实际需要发送的时间进行排序,对于距离发送时间很近的消息,可以通过轮询的方式取出来,然后将消息发送出去。
所述业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;
所述延迟消息模块,用于将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;还用于每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据,还用于当获取到所述业务数据时,将所述获取到的业务数据进行处理并发送至消息队列中,所述消息队列接收到消息后,将消息投递至定时任务执行模块;以及
所述定时任务执行模块,用于接收到来自于所述消息队列的消息后,启动线程以执行指定的业务逻辑。
本发明的延迟消息队列实现方法及系统,能够支持任意时间、级别的延迟消息。
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种延迟消息队列实现方法,包括:
S101、在缓存服务器上预先创建一有序集合;
S102、业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;
S103、所述延迟消息模块将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;
S104、所述延迟消息模块每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据;
S105、若获取到所述业务数据,则将获取到的数据进行处理,将处理后的业务数据发送至消息队列中;
S106、消息队列收到消息后,将消息投递至定时任务执行模块;
S107、定时任务执行模块启动线程进行定时任务的执行。
2.如权利要求1所述的延迟消息队列实现方法,其特征在于:
在S101步骤中,系统启动时,在缓存服务器上预先创建一以字符串TASK_MSGS为KEY的有序集合。
3.如权利要求2所述的延迟消息队列实现方法,其特征在于:
在S103步骤中,所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。
4.如权利要求1至3中任一项所述的延迟消息队列实现方法,其特征在于,还包括:
所述业务流程发送删除延迟消息至所述延迟消息模块;
所述延迟消息模块将所述有序集合中对应的延迟消息删除。
5.一种延迟消息队列实现系统,包括:
缓存服务器,存储有创建的有序集合,其中,在业务流程中会向该有序集合中插入延迟消息和删除延迟消息;
所述业务流程发送延迟消息至延迟消息模块,其中,所述延迟消息包括业务数据以及定时执行时间;
所述延迟消息模块,用于将所述延迟消息保存至缓存服务器的有序集合中,所述缓存服务器根据时间戳进行升序排序;还用于每隔一预定时间至所述缓存服务器上获取与当前时间的时间戳相等的业务数据,还用于当获取到所述业务数据时,将所述获取到的业务数据进行处理并发送至消息队列中,所述消息队列接收到消息后,将消息投递至定时任务执行模块;
所述定时任务执行模块,用于接收到来自于所述消息队列的消息后,启动线程以执行指定的业务逻辑。
6.如权利要求5所述的延迟消息队列实现系统,其特征在于:所述服务器存储有一以字符串TASK_MSGS为KEY的有序集合。
7.如权利要求6所述的延迟消息队列实现系统,其特征在于:所述延迟消息模块将业务数据以及定时执行时间存放到缓存服务器的zset有序集合中,所述缓存服务器将定时执行的时间转换为时间戳,按照时间戳的值进行升序排列。
8.如权利要求7所述的延迟消息队列实现系统,其特征在于:所述业务流程还发送删除延迟消息至所述延迟消息模块;所述延迟消息模块将所述有序集合中对应的延迟消息删除。
CN201911295794.8A 2019-12-16 2019-12-16 延迟消息队列实现方法以及系统 Withdrawn CN111045806A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911295794.8A CN111045806A (zh) 2019-12-16 2019-12-16 延迟消息队列实现方法以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911295794.8A CN111045806A (zh) 2019-12-16 2019-12-16 延迟消息队列实现方法以及系统

Publications (1)

Publication Number Publication Date
CN111045806A true CN111045806A (zh) 2020-04-21

Family

ID=70236758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911295794.8A Withdrawn CN111045806A (zh) 2019-12-16 2019-12-16 延迟消息队列实现方法以及系统

Country Status (1)

Country Link
CN (1) CN111045806A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111722914A (zh) * 2020-06-12 2020-09-29 江苏苏宁银行股份有限公司 一种定时任务分发方法、系统、计算机设备及存储介质
CN111949654A (zh) * 2020-07-20 2020-11-17 上海淇馥信息技术有限公司 一种基于用户标签的快速查询方法、系统和电子设备
CN112131496A (zh) * 2020-09-15 2020-12-25 北京值得买科技股份有限公司 网页投票数据处理方法、装置以及设备
CN112148504A (zh) * 2020-09-15 2020-12-29 海尔优家智能科技(北京)有限公司 目标消息的处理方法及装置、存储介质及电子装置
CN112286660A (zh) * 2020-10-30 2021-01-29 上海二三四五网络科技有限公司 一种延时触发交易的控制方法以及控制装置
CN112418752A (zh) * 2020-11-05 2021-02-26 上海非码网络科技有限公司 定制化商户智能配送方法及系统
CN112702259A (zh) * 2020-12-23 2021-04-23 北京焦点新干线信息技术有限公司 延迟消息推送方法、装置及消息中间件
CN112787958A (zh) * 2021-01-05 2021-05-11 北京字跳网络技术有限公司 延迟消息处理方法及设备
CN112905359A (zh) * 2021-03-05 2021-06-04 上海中通吉网络技术有限公司 基于延迟时间的分布式消息处理方法、装置和系统
CN113238860A (zh) * 2021-04-29 2021-08-10 北京达佳互联信息技术有限公司 一种任务请求处理方法、装置、电子设备及存储介质

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111722914B (zh) * 2020-06-12 2022-07-22 江苏苏宁银行股份有限公司 一种定时任务分发方法、系统、计算机设备及存储介质
CN111722914A (zh) * 2020-06-12 2020-09-29 江苏苏宁银行股份有限公司 一种定时任务分发方法、系统、计算机设备及存储介质
CN111949654A (zh) * 2020-07-20 2020-11-17 上海淇馥信息技术有限公司 一种基于用户标签的快速查询方法、系统和电子设备
CN112131496A (zh) * 2020-09-15 2020-12-25 北京值得买科技股份有限公司 网页投票数据处理方法、装置以及设备
CN112148504A (zh) * 2020-09-15 2020-12-29 海尔优家智能科技(北京)有限公司 目标消息的处理方法及装置、存储介质及电子装置
CN112131496B (zh) * 2020-09-15 2024-04-12 北京值得买科技股份有限公司 网页投票数据处理方法、装置以及设备
CN112286660A (zh) * 2020-10-30 2021-01-29 上海二三四五网络科技有限公司 一种延时触发交易的控制方法以及控制装置
CN112418752A (zh) * 2020-11-05 2021-02-26 上海非码网络科技有限公司 定制化商户智能配送方法及系统
CN112702259A (zh) * 2020-12-23 2021-04-23 北京焦点新干线信息技术有限公司 延迟消息推送方法、装置及消息中间件
CN112787958A (zh) * 2021-01-05 2021-05-11 北京字跳网络技术有限公司 延迟消息处理方法及设备
CN112905359A (zh) * 2021-03-05 2021-06-04 上海中通吉网络技术有限公司 基于延迟时间的分布式消息处理方法、装置和系统
CN113238860A (zh) * 2021-04-29 2021-08-10 北京达佳互联信息技术有限公司 一种任务请求处理方法、装置、电子设备及存储介质
CN113238860B (zh) * 2021-04-29 2024-03-26 北京达佳互联信息技术有限公司 一种任务请求处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111045806A (zh) 延迟消息队列实现方法以及系统
CN108769099B (zh) 一种消息中间件的消息去重的实现方法
CN109901918B (zh) 一种处理超时任务的方法和装置
CN111030784A (zh) 一种信息同步方法和装置
CN108932157B (zh) 分布式处理任务的方法、系统、电子设备和可读介质
CN111367925A (zh) 数据动态实时更新方法、装置及存储介质
CN107870982B (zh) 数据处理方法、系统和计算机可读存储介质
CN110851248A (zh) 异步任务数据处理方法、装置及计算机可读存储介质
CN111931110B (zh) 一种消息推送处理方法、装置及系统
CN111240812A (zh) 任务执行方法及装置
CN111835467A (zh) 消息发送方法、装置、计算机设备和存储介质
CN111507608A (zh) 工单预警方法、装置和存储介质
CN112365238A (zh) Todo自动提醒方法、系统、电子设备及可读存储介质
US7451127B2 (en) Web store events
CN109542917B (zh) 数据读取方法及计算机可读介质
CN113127225A (zh) 一种数据处理任务的调度方法、装置和系统
CN110389976B (zh) 一种多接口数据的调度方法和装置
US20120102168A1 (en) Communication And Coordination Between Web Services In A Cloud-Based Computing Environment
CN113743879A (zh) 一种自动化规则处理方法、系统以及相关设备
CN111274047A (zh) 信息处理方法、终端、系统、计算机设备和存储介质
CN108428182B (zh) 开发平台装置、获取保单号的方法及计算机可读存储介质
US20150120607A1 (en) System and method for customer event email consolidation and delivery
CN113347245B (zh) 一种基于消息队列的文件分片断点传输方法及装置
CN107563942B (zh) 一种物流数据批量处理方法、物流处理系统以及处理装置
CN107102901B (zh) 一种任务处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200421