CN111782414B - 一种延时消息处理方法及系统 - Google Patents
一种延时消息处理方法及系统 Download PDFInfo
- Publication number
- CN111782414B CN111782414B CN202010397495.1A CN202010397495A CN111782414B CN 111782414 B CN111782414 B CN 111782414B CN 202010397495 A CN202010397495 A CN 202010397495A CN 111782414 B CN111782414 B CN 111782414B
- Authority
- CN
- China
- Prior art keywords
- time
- message
- delay
- wheel
- queue
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 19
- 230000001960 triggered effect Effects 0.000 claims abstract description 53
- 238000013500 data storage Methods 0.000 claims abstract description 31
- 238000012544 monitoring process Methods 0.000 claims abstract description 24
- 230000003111 delayed effect Effects 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 8
- 230000002688 persistence Effects 0.000 claims description 4
- 230000008030 elimination Effects 0.000 claims description 2
- 238000003379 elimination reaction Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种延时消息处理方法,在计算设备中执行,包括:接收应用程序投递的延时消息,该消息包括应用标识、延时时长、监听队列标识;计算延时消息的待触发时间,将延时消息与待触发时间相关联的存储到数据存储装置,并根据待触发时间是否在当前预定周期或下一个预定周期将延时消息插入工作时间轮或缓冲时间轮;每隔预定时间从工作时间轮取出当前时刻的延时消息发送到待消费消息队列,以便应用程序进行监听处理;当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从数据存储装置获取待触发时间在下一个预定周期内的消息存储到当前缓冲时间轮。本发明还公开了相应的系统、计算设备和可读存储介质。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种延时消息处理方法及系统。
背景技术
随着互联网业务的快速发展,很多应用衍生出在执行了前置任务A之后,延迟一段时间后自动处理任务B的业务需求,即延时任务,这种延时任务最初采用定时器完成,即每执行一次前置任务A,开启一个定时器,在经过特定时间后,执行任务B,但是由于互联网应用高并发的特点,定时器的开启、销毁、调度会在访问峰值时占用过多的CPU资源,对系统稳定性带来极大的不良影响。
随后产生了通过消息中间件对延时消息的处理,在消息中间件中建立死信队列,通过设置死信队列的超时时间来模拟计时器,并设置对应的目标业务队列,当一个消息被投递到死信队列后,经过了设置的超时时间后,会自动被投递到所设置的目标业务队列,由于业务形态多种多样,每出现一个新的业务需求,需要在中间件上面增加死信队列,并为死信队列设置超时时间和目标业务队列,业务需求改变时,也需要更改消息中间件的相关配置,另外,超时时间配置在队列维度,在不同的场合下,同一业务可能有不同的延时时长,则需要为每个延时时长建立一个死信队列,存在大量的冗余队列,同时,如果业务规定的过期时间是可配置的,无法做到动态扩展。
发明内容
为此,本发明提供了一种延时消息处理方法及系统。
根据本发明的一个方面,提供一种延时消息处理方法,适于在计算设备中执行,计算设备中预设有工作时间轮、缓冲时间轮,计算设备与多个应用程序耦接,并与数据存储装置相连接,方法包括:接收应用程序投递的延时消息,延时消息包括应用标识、延时时长和监听队列标识;根据延时时长计算延时消息的待触发时间,将延时消息与待触发时间相关联的存储到数据存储装置,并将待触发时间在当前预定周期时间内的延时消息插入工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入缓冲时间轮;每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息,并发送到对应监听队列标识的待消费消息队列,以便应用程序进行监听处理;当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从数据存储装置中获取待触发时间在下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
可选的,在根据本发明的延时消息处理方法中,工作时间轮和缓冲时间轮所表示的时间跨度相同,预定周期等于时间跨度。
可选的,在根据本发明的延时消息处理方法中,工作时间轮和缓冲时间轮为层级时间轮。
可选的,在根据本发明的延时消息处理方法中,待消费消息队列为消息中间件。
可选的,在根据本发明的延时消息处理方法中,延时消息还包括调用的目标逻辑,应用程序进行监听处理包括:应用程序通过消息监听器监听对应监听队列标识的待消费消息队列;当监听到有待消费消息队列接收到新的延时消息时,通过调用调用的目标逻辑完成延时消息的处理。
可选的,在根据本发明的延时消息处理方法中,调用的目标逻辑包括项目名、函数名和参数列表。
可选的,在根据本发明的延时消息处理方法中,预定时间间隔为1秒。
根据本发明的一个方面,提供一种延时消息处理装置,适于驻留在计算设备中,计算设备中预设有工作消息队列、缓冲消息队列,计算设备与数据存储装置相连接,装置包括:消息接口,适于接收应用程序投递的延时消息,延时消息包括应用标识、延时时长和监听队列标识;持久化数据处理器,适于根据延时时间计算延时消息的待触发时间,并将延时消息与待触发时间相关联的存储到数据存储装置,将待触发时间在当前预定周期时间内的延时消息插入工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入缓冲消时间轮;定时器单元,适于每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息放入缓冲队列;消息推送单元,适于将缓冲队列中的延时消息推送到对应监听队列标识的待消费消息队列,以便应用程序进行监听处理;消息读取单元,适于在当前预定周期时间结束时,交换工作时间轮和缓冲时间轮时,从数据存储装置中获取下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
可选的,在根据本发明的延时消息处理装置中,工作时间轮和缓冲时间轮所表示的时间跨度相同,预定周期等于时间跨度。
可选的,在根据本发明的延时消息处理装置中,工作时间轮和缓冲时间轮为层级时间轮。
可选的,在根据本发明的延时消息处理装置中,待消费消息队列为消息中间件。
可选的,在根据本发明的延时消息处理装置中,延时消息还包括调用的目标逻辑,应用程序适于按照如下方式对待消费消息队列进行监听处理:通过消息监听器监听对应应用标签的待消费消息队列;当监听到有待消费消息队列接收到新的延时消息时,通过调用目标逻辑完成延时消息的处理。
可选的,在根据本发明的延时消息处理装置中,调用的目标逻辑包括项目名、函数名和参数列表。
可选的,在根据本发明的延时消息处理装置中,预定时间间隔为1秒。
根据本发明的一个方面,提供一种延时消息处理系统,包括至少一个应用服务器、延时消息处理器,数据存储装置和消息中间处理器,应用服务器上驻留有多个应用程序,其中,应用服务器,适于将应用程序的延时消息投递到延时消息处理器;数据存储装置,适于存储延时消息;
延时消息处理器,包括工作时间轮和缓冲时间轮,延时消息处理器适于:
接收延时消息并将延时消息存储到数据存储装置,延时消息包括应用标识、延时时长和监听队列标识,延时消息处理器根据延时时间计算延时消息的待触发时间;将待触发时间在当前预定周期时间内的延时消息插入工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入缓冲时间轮;每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息存储到缓冲队列;当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从数据存储装置中获取下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
消息中间处理器,适于接收从缓冲队列推送过来的延时消息,并存储到对应监听队列标识的待消费消息队列,以便应用程序监听处理。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行上述延时消息处理方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行上述延时消息处理方法。
根据本发明的延时消息处理方案,通过将延时消息和其对应的待触发时间关联的进行持久化,并通过工作时间轮和消息时间轮周期交替的设计,实现了以消息任务维度来实现延迟消息的处理,其中,工作时间轮存储待触发时间在当前预定周期的延时消息,缓冲时间轮存储待触发时间在下一个预定周期内的延时消息,通过消息定时器定时读取当前周期内的延时消息并取出进行处理,因为所有的任务使用同一个定时器管理,大大提高了CPU资源利用率,避免了针对不同延时时间的延时消息建立大量的冗余队列,同时,因为采用工作时间轮和消息时间轮周期交替的设计,减少了I/O操作产生的延迟,通过本发明的延时消息处理方案,针对不同的延时消息的设计方案只需要进行不同的时间设置即可,方便业务扩展和修改。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的延时消息处理系统100的框图;
图2示出了根据本发明一个实施例的计算设备200的框图;
图3示出了根据本发明一个实施例的延时消息处理方法300的流程图;
图4示出了根据本发明一个实施例的层级时间轮的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的延时消息处理系统100的框图。应当指出,图1中的延时消息处理系统仅为示例性的,延时消息处理系统包括至少一个应用服务器110、延时消息处理器120、消息中间处理器130和数据存储装置140,并通过互联网互相连接。其中,数据存储装置140可以为任何与延时消息处理器连接的数据存储装置,本发明对数据存储装置140的具体部署、配置情况不做限制。
应用服务器110上驻留多个应用程序,应用程序生成延时消息并调用延时消息处理器的应用程序接口(API)发送到延时消息处理器120,应用程序发送到延时消息处理器的消息包含有应用标识、延时时长、监听队列标识和调用的目标逻辑等参数,其中,调用的目标逻辑包括项目名、函数名以及参数列表。应用程序通过消息监听器111监听消息中间处理器130上的该应用程序所对应的待消费消息队列,当监听到有待消费的延时消息时,触发调用目标逻辑完成逻辑回调。图1中仅示出一个应用服务器,在实际应用中,延时消息处理器可以连接多个应用服务器,本发明对应用服务器的部署和数量不做限制。
延时消息处理器120通过消息接口单元121接收应用程序发送的延时消息,持久化数据处理器123根据延时消息中的延时时长计算该延时消息的待触发时间,并将延时消息和其对应的待触发时间关联的存储到数据存储装置140,同时,将待触发时间在当前预定周期时间内的延时消息插入工作时间轮125,将待触发时间在下一个预定周期时间内的延时消息插入缓冲时间轮126。借用定时器127每隔预定时间间隔取出工作时间轮中的当前时刻的延时消息,通过消息推送单元122推送到消息中间处理器130中对应监听队列标识的待消费消息队列131中,当前预定周期结束时,交换工作时间轮和缓冲时间轮,通过消息读取单元124从数据存储装置140中读取下一个预定周期内的延时消息存储到当前的缓冲时间轮,依次循环处理。
工作时间轮和缓冲时间轮为两个时间跨度相同的时间轮容器,同一时刻,一个为工作时间轮,另一个为缓冲时间轮,工作时间轮的起始时间为t1,时间轮的时间跨度为td,则缓冲时间轮的起始时间为t1+td,初始化时,将t1初始化为当前时间。
根据本发明的一个实施例,消息中间处理器130可以由消息中间件实现,包含有多个待消费消息队列131,分别接收对应各应用程序的监听队列标识的延时消息。
应用服务器110上的应用程序设有消息监听器,用来监听对应该应用程序的待消费消息队列,当监听到待消费消息队列接收到延时消息时,通过延时消息中包含的调用的目标逻辑进行回调处理。
可以看出,延时消息处理系统中涉及工作时间轮和消息时间轮以及一个定时器,可以处理不同延时时长的延时消息,从而提高了CPU资源利用率,同时,因为采用工作时间轮和消息时间轮周期交替的设计,减少了I/O操作产生的延迟,针对不同的延时消息的设计方案只需要进行不同的时间设置即可,方便业务扩展和修改。
根据本发明的一个实施例,延时消息处理系统还可以包括web客户端(图1中未显示),通过消息看板对消息系统进行监控、统计和异常消息处理等。
图1所述的延时消息处理系统中的延时消息处理器可以由计算设备实现,图2示出了根据本发明一个实施例的计算设备200的示意图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的数据处理方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的数据处理方法的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。图1所示的延时消息处理系统中的应用服务器、延时消息处理器、消息中间处理器都可以由计算设备200来实现。
如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器204读取。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器204利用程序数据224执行指令。操作系统220例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用222包括用于实现各种用户期望的功能的程序指令,应用222例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用222被安装到计算设备200中时,可以向操作系统220添加驱动模块。
在计算设备200启动运行时,处理器204会从存储器206中读取操作系统220的程序指令并执行。应用222运行在操作系统220之上,利用操作系统220以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用222时,应用222会加载至存储器206中,处理器204从存储器206中读取并执行应用222的程序指令。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备142包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由
一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括用于执行本发明的延时消息处理方法300的指令,该指令可以指示处理器204执行本发明的延时消息处理方法300。
图3示出了根据本发明一个实施例的延时消息处理方法300的流程图。方法300在计算设备中执行,计算设备中预设有工作时间轮、缓冲时间轮,并与数据存储装置相连接,其中,工作时间轮和缓冲时间轮的时间跨度相同,计算设备与产生延时消息的多个应用程序相连接。
如图3所示,方法300始于步骤S310,计算设备通过消息接口单元接收应用程序投递的延时消息,延时消息的消息体包括应用标识、延时时长、监听队列标识和调用的目标逻辑等参数。其中,调用的目标逻辑包括项目名、函数名和参数列表。
与延时消息处理器连接的多个应用程序可以驻留在不同的应用服务器中,当应用程序产生延时消息时,通过调用延时消息处理器的接口将延时消息发送到延时消息处理器,并提供应用标识、延时时长、监听队列标识和调用的目标逻辑等参数,这些参数用于应用程序逻辑回调时使用。
随后进入步骤S320,对于从消息接口单元接收到的延时消息,计算该延时消息的待触发时间,将延时消息持久化,根据待触发时间确定是否插入工作时间轮或缓冲时间轮该。
具体地,在接收到应用程序的延时消息时,根据该延时消息中携带的延时时长计算延时消息的待触发时间,根据本发明的一个实施例,收到延时消息A的延时时长为10分钟,当前时间为19点,则计算所得的延时消息A的待触发时间为19点10分,并将延时消息A和其对应的待触发时间相对应的存储到数据存储装置140中。
判断延时消息的待触发时间是否在当前预定周期,若在,将延时消息插入当前时间轮,若否,判断待触发时间是否在下个预定周期内,若在,将延时消息插入缓冲时间轮,其中预定周期的长度等于工作时间轮和缓冲时间轮的时间跨度。根据本发明的一个实施例,当前时间为19点,预定周期为10分钟,当前工作时间轮的开始时间为18点59分,结束时间为19点9分,则当前缓冲时间轮的开始时间为19点9分,结束时间为19点19分,接收到的延时消息B的待触发时间为19点5分,则将延时消息B插入当前工作时间轮,延时消息C的待触发时间为19点15分,则将延时消息C插入缓冲时间轮。
工作时间轮和缓冲时间轮为存储定时任务的环形队列,底层采用数组实现,数组中的每个元素可以存放一个延时消息列表,延时消息列表是一个环形的双向链表,链表中的每一项中封装了延时消息。
根据本发明的一个实施例,工作时间轮和缓冲时间轮可以为层级时间轮,如图4所示,时间轮可以包含多个层级,图4示出了包含两个层级的时间轮,第一层时间轮每一个槽的时间跨度(tickMs)为1秒,时间轮的大小(wheelsize)为8,第一层时间轮的时间跨度(interval)为8秒,第二层时间轮的tickMs为8秒,wheelsize为8,则第二层时间轮的时间跨度为64秒,根据图4所示的层级时间轮,预定周期为64秒。本发明对时间轮的层级数目、tickMs、wheelsize不做限定,可以根据计算设备的处理能力进行设定。
在步骤S330中,每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息存储到缓冲队列,由消息推送单元将消息推送到对应该延时消息的监听队列标识的待消费消息队列。
根据本发明的一个实施例,预定时间间隔为1s,通过计时器每隔1s取出工作时间轮中当前时刻的延时消息并发送到缓冲队列,并将不同应用的延时消息推送到其对应的待消费消息队列,根据本发明的又一实施例,延时消息处理器连接的多个应用程序中有应用A、应用B和应用C,其分别对应A1待消费消息队列、B1待消费消息队列和C1待消费消息队列,消息推送单元在推送消息时,会根据不同应用的延时消息推送到不同的待消费消息队列,应用A的延时消息消息推送到A1队列,应用B的消息推送到B1队列,应用C的消息推送到C1队列。
待消费消息队列可以由消息中间件来实现,应用程序通过消息监听器监听对应的待消费消息队列,当监听到有待消费的延时消息时,通过调用目标逻辑完成延时消息的处理。
随后进入步骤S340,当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从数据存储装置中获取待触发时间在下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
根据本发明的一个实施例,工作时间轮的开始时间为19点,预定周期为10分钟,则工作时间轮的结束时间为19点10分,缓冲时间轮的开始时间为19点10分,由于工作时间轮和缓冲时间轮的时间跨度相同,缓冲时间轮的结束时间为19点20分钟,在步骤S340中,在19点10分时工作时间轮中的延时消息已经处理完毕,工作时间轮为空,交换工作时间轮和缓冲时间轮,此时,工作时间轮成为当前时刻的缓冲时间轮,可以继续接收下一个预定周期的延时消息。
根据本发明的延时消息处理方案,通过将延时消息和其对应的待触发时间关联的进行持久化,并通过工作时间轮和消息时间轮周期交替的设计,实现了以消息任务维度来实现延迟消息的处理。其中,工作时间轮存储待触发时间在当前预定周期的延时消息,缓冲时间轮存储待触发时间在下一个预定周期内的延时消息,消息定时器定时读取当前周期内的延时消息,因为所有的任务仅需使用一个定时器管理,大大提高了CPU资源利用率,避免了针对不同延时时间的延时消息建立的大量的冗余队列,同时,因为采用工作时间轮和消息时间轮周期交替的设计,减少了I/O操作产生的延迟,通过本发明的延时消息处理方案,针对不同的延时消息的设计方案只需要进行不同的时间设置即可,方便业务扩展和修改。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的延时消息处理方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
A6、如A1-A5中任意一项所述的方法,其中,所述调用的目标逻辑包括项目名、函数名和参数列表。
A7、如A1-A6中任意一项所述的方法,其中,所述预定时间间隔为1秒。
B10、如B8或B9所述的装置,其中,所述工作时间轮和缓冲时间轮为层级时间轮。
B11、如B8-B10中任意一项所述的装置,其中,所述待消费消息队列为消息中间件。
B12、如B8-B11中任意一项所述的装置,其中,所述延时消息还包括调用的目标逻辑,所述应用程序适于按照如下方式对待消费消息队列进行监听处理:
通过消息监听器监听对应所述应用标签的待消费消息队列;
当监听到有所述待消费消息队列接收到新的延时消息时,通过调用所述目标逻辑完成延时消息的处理。
B13、如B8-B12中任意一项所述的装置,其中,所述调用的目标逻辑包括项目名、函数名和参数列表。
B14、如B8-B13中任意一项所述的装置,其中,所述预定时间间隔为1秒。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (17)
1.一种延时消息处理方法,适于在计算设备中执行,所述计算设备中预设有工作时间轮、缓冲时间轮,所述计算设备与多个应用程序耦接,并与数据存储装置相连接,所述方法包括:
接收应用程序投递的延时消息,所述延时消息包括应用标识、延时时长和监听队列标识;
根据所述延时时长计算延时消息的待触发时间,将所述延时消息与所述待触发时间相关联的存储到所述数据存储装置,并将待触发时间在当前预定周期时间内的延时消息插入所述工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入所述缓冲时间轮;
每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息,并发送到对应所述监听队列标识的待消费消息队列,以便应用程序进行监听处理;
当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从所述数据存储装置中获取待触发时间在下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
2.如权利要求1所述的方法,其中,所述工作时间轮和缓冲时间轮所表示的时间跨度相同,所述预定周期等于所述时间跨度。
3.如权利要求1或2所述的方法,其中,所述工作时间轮和缓冲时间轮为层级时间轮。
4.如权利要求1或2所述的方法,其中,所述待消费消息队列为消息中间件。
5.如权利要求1或2所述的方法,其中,所述延时消息还包括调用的目标逻辑,所述应用程序进行监听处理包括:
所述应用程序通过消息监听器监听对应所述监听队列标识的待消费消息队列;
当监听到有所述待消费消息队列接收到新的延时消息时,通过调用所述调用的目标逻辑完成延时消息的处理。
6.如权利要求5所述的方法,其中,所述调用的目标逻辑包括项目名、函数名和参数列表。
7.如权利要求1或2所述的方法,其中,所述预定时间间隔为1秒。
8.一种延时消息处理装置,适于驻留在计算设备中,所述计算设备中预设有工作时间轮、缓冲时间轮,所述计算设备与数据存储装置相连接,所述装置包括:
消息接口,适于接收应用程序投递的延时消息,所述延时消息包括应用标识、延时时长和监听队列标识;
持久化数据处理器,适于根据所述延时时长计算延时消息的待触发时间,并将所述延时消息与所述待触发时间相关联的存储到所述数据存储装置,将待触发时间在当前预定周期时间内的延时消息插入所述工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入所述缓冲消时间轮;
定时器单元,适于每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息放入缓冲队列;
消息推送单元,适于将所述缓冲队列中的延时消息推送到对应所述监听队列标识的待消费消息队列,以便应用程序进行监听处理;
消息读取单元,适于在当前预定周期时间结束时,交换工作时间轮和缓冲时间轮时,从所述数据存储装置中获取下一个预定周期时间内的延时消息存储到当前缓冲时间轮。
9.如权利要求8所述的装置,其中,所述工作时间轮和缓冲时间轮所表示的时间跨度相同,所述预定周期等于所述时间跨度。
10.如权利要求8或9所述的装置,其中,所述工作时间轮和缓冲时间轮为层级时间轮。
11.如权利要求8或9所述的装置,其中,所述待消费消息队列为消息中间件。
12.如权利要求8或9所述的装置,其中,所述延时消息还包括调用的目标逻辑,所述应用程序适于按照如下方式对待消费消息队列进行监听处理:
通过消息监听器监听对应应用标签的待消费消息队列;
当监听到有所述待消费消息队列接收到新的延时消息时,通过调用所述目标逻辑完成延时消息的处理。
13.如权利要求12所述的装置,其中,所述调用的目标逻辑包括项目名、函数名和参数列表。
14.如权利要求8或9所述的装置,其中,所述预定时间间隔为1秒。
15.一种延时消息处理系统,包括至少一个应用服务器、延时消息处理器,数据存储装置和消息中间处理器,所述应用服务器上驻留有多个应用程序,其中,
所述应用服务器,适于将应用程序的延时消息投递到所述延时消息处理器;
所述数据存储装置,适于存储延时消息;
所述延时消息处理器,包括工作时间轮和缓冲时间轮,所述延时消息处理器适于:
接收延时消息并将延时消息存储到所述数据存储装置,所述延时消息包括应用标识、延时时长和监听队列标识,所述延时消息处理器根据所述延时时长计算延时消息的待触发时间;
将待触发时间在当前预定周期时间内的延时消息插入所述工作时间轮,将待触发时间在下一个预定周期时间内的延时消息插入所述缓冲时间轮;
每隔预定时间间隔从工作时间轮取出待触发时间为当前时刻的延时消息存储到缓冲队列;
当前预定周期时间结束时,交换工作时间轮和缓冲时间轮,并从所述数据存储装置中获取下一个预定周期时间内的延时消息存储到当前缓冲时间轮;
所述消息中间处理器,适于接收从所述缓冲队列推送过来的延时消息,并存储到对应所述监听队列标识的待消费消息队列,以便应用程序监听处理。
16.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
17.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397495.1A CN111782414B (zh) | 2020-05-12 | 2020-05-12 | 一种延时消息处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397495.1A CN111782414B (zh) | 2020-05-12 | 2020-05-12 | 一种延时消息处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782414A CN111782414A (zh) | 2020-10-16 |
CN111782414B true CN111782414B (zh) | 2024-04-19 |
Family
ID=72753915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010397495.1A Active CN111782414B (zh) | 2020-05-12 | 2020-05-12 | 一种延时消息处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782414B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416627B (zh) * | 2020-12-02 | 2023-08-18 | 北京皮尔布莱尼软件有限公司 | 一种基于流程的事件信息处理方法、计算设备及存储介质 |
CN112702259B (zh) * | 2020-12-23 | 2023-05-23 | 北京焦点新干线信息技术有限公司 | 延迟消息推送方法、装置及消息中间件 |
CN112925661B (zh) * | 2021-03-09 | 2024-04-19 | 广州虎牙科技有限公司 | 消息处理方法、装置、计算机设备及存储介质 |
CN113011622A (zh) * | 2021-03-16 | 2021-06-22 | 北京百度网讯科技有限公司 | 会议室预定的处理方法及装置、计算设备和介质 |
CN113037450A (zh) * | 2021-03-17 | 2021-06-25 | 杭州遥望网络科技有限公司 | 一种延迟消息处理方法、装置、设备及可读存储介质 |
CN113282426B (zh) * | 2021-04-27 | 2024-05-31 | 北京皮尔布莱尼软件有限公司 | 一种消息处理系统、方法及计算设备 |
CN113709214A (zh) * | 2021-08-04 | 2021-11-26 | 北京快乐茄信息技术有限公司 | 消息处理方法及装置、电子设备及存储介质 |
CN115002187B (zh) * | 2022-05-24 | 2024-04-30 | 北京有竹居网络技术有限公司 | 绑定关系处理方法及相关设备 |
CN115484179B (zh) * | 2022-09-16 | 2024-04-16 | 杭州极能科技有限公司 | 一种设备告警数据防抖方法 |
CN115529288B (zh) * | 2022-09-21 | 2024-04-19 | 上海浦东发展银行股份有限公司 | 一种消息推送的方法、装置、计算机设备 |
CN115328680B (zh) * | 2022-09-28 | 2023-01-31 | 天津卓朗昆仑云软件技术有限公司 | 消息队列消费异常的辅助方法、装置和电子设备 |
CN117544573A (zh) * | 2023-11-06 | 2024-02-09 | 中移互联网有限公司 | 消息延时推送方法、装置、电子设备及存储介质 |
CN117215755B (zh) * | 2023-11-07 | 2024-02-06 | 西安博达软件股份有限公司 | 一种基于时间轮算法的预约事件任务调度方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4630261A (en) * | 1984-07-30 | 1986-12-16 | International Business Machines Corp. | Integrated buffer management and signaling technique |
US7277448B1 (en) * | 2003-06-27 | 2007-10-02 | Cisco Technology, Inc. | Hierarchical scheduler inter-layer eligibility deferral |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN104951282A (zh) * | 2015-05-21 | 2015-09-30 | 中国人民解放军理工大学 | 一种定时器管理系统及方法 |
CN105760378A (zh) * | 2014-12-15 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种事务状态监控方法与设备 |
WO2017167062A1 (zh) * | 2016-03-30 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
CN107896172A (zh) * | 2017-11-24 | 2018-04-10 | 泰康保险集团股份有限公司 | 监听故障处理方法及装置、存储介质和电子设备 |
CN108388479A (zh) * | 2018-02-10 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 延迟消息推送方法、装置、计算机设备及存储介质 |
CN109964215A (zh) * | 2016-11-18 | 2019-07-02 | 微软技术许可有限责任公司 | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111124653A (zh) * | 2019-12-31 | 2020-05-08 | 江苏满运软件科技有限公司 | 延迟消息处理方法、系统、设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632852B2 (en) * | 2014-08-25 | 2017-04-25 | Salesforce.Com, Inc. | Detecting and managing flooding of multi-tenant message queues |
US9417840B2 (en) * | 2014-09-16 | 2016-08-16 | Salesforce.Com, Inc. | In-memory buffer service |
US10033829B2 (en) * | 2015-08-21 | 2018-07-24 | The Boeing Company | Integrated scheduling of general messages and time-critical messages |
US10462067B2 (en) * | 2017-01-26 | 2019-10-29 | International Business Machines Corporation | Proactive channel agent |
US11068488B2 (en) * | 2018-07-05 | 2021-07-20 | Cisco Technology, Inc. | Efficient time based correlation of data streams |
-
2020
- 2020-05-12 CN CN202010397495.1A patent/CN111782414B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4630261A (en) * | 1984-07-30 | 1986-12-16 | International Business Machines Corp. | Integrated buffer management and signaling technique |
US7277448B1 (en) * | 2003-06-27 | 2007-10-02 | Cisco Technology, Inc. | Hierarchical scheduler inter-layer eligibility deferral |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN105760378A (zh) * | 2014-12-15 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种事务状态监控方法与设备 |
CN104951282A (zh) * | 2015-05-21 | 2015-09-30 | 中国人民解放军理工大学 | 一种定时器管理系统及方法 |
WO2017167062A1 (zh) * | 2016-03-30 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
CN109964215A (zh) * | 2016-11-18 | 2019-07-02 | 微软技术许可有限责任公司 | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 |
CN107896172A (zh) * | 2017-11-24 | 2018-04-10 | 泰康保险集团股份有限公司 | 监听故障处理方法及装置、存储介质和电子设备 |
CN108388479A (zh) * | 2018-02-10 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 延迟消息推送方法、装置、计算机设备及存储介质 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111124653A (zh) * | 2019-12-31 | 2020-05-08 | 江苏满运软件科技有限公司 | 延迟消息处理方法、系统、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
利用时间轮询方式操作DDR3实现多模式下数据重排;王辉辉;汪慧;;火控雷达技术;20160325(第01期);全文 * |
基于Windows的精确定时技术在Link-16模拟中的应用;谢红;李松;韩放;;应用科技;20060805(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111782414A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782414B (zh) | 一种延时消息处理方法及系统 | |
US9606785B2 (en) | Detecting deployment conflicts in heterogeneous environments | |
US8972956B2 (en) | Application deployment in heterogeneous environments | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
US11429448B2 (en) | Background job processing framework | |
CN107241380B (zh) | 用于基于时间调整的负载均衡的方法和设备 | |
US8984527B2 (en) | System and method for execution time donation in a time-partitioning scheduler | |
US9317332B2 (en) | Resolving deployment conflicts in heterogeneous environments | |
WO2020232871A1 (zh) | 一种微服务依赖分析方法及装置 | |
US9038093B1 (en) | Retrieving service request messages from a message queue maintained by a messaging middleware tool based on the origination time of the service request message | |
CN109933356B (zh) | 远程代理类热替换方法及装置 | |
CN113282426B (zh) | 一种消息处理系统、方法及计算设备 | |
CN105308566B (zh) | 请求式可扩展定时器轮 | |
CN102420709A (zh) | 一种基于任务框架的调度任务管理方法和设备 | |
CN116192956A (zh) | 一种缓存数据更新方法、系统、计算设备及存储介质 | |
CN117724852B (zh) | 一种云电脑计算资源分配方法及装置 | |
CN112118297B (zh) | 延时消息的控制方法、装置、设备及存储介质 | |
CN107357864B (zh) | 一种文件处理方法及终端 | |
CN113157426A (zh) | 一种任务调度方法、系统、设备及存储介质 | |
CN112688980B (zh) | 资源分发方法、装置、计算机设备 | |
CN111367868B (zh) | 一种文件获取请求的处理方法和装置 | |
CN110231983B (zh) | 数据并发处理方法、装置及系统、计算机设备及可读介质 | |
CN106610996B (zh) | 热词典切换方法和装置 | |
CN118626234B (zh) | 操作响应方法和操作响应装置 | |
JP7574435B2 (ja) | ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |