CN112966005B - 定时消息发送方法、装置、计算机设备以及存储介质 - Google Patents
定时消息发送方法、装置、计算机设备以及存储介质 Download PDFInfo
- Publication number
- CN112966005B CN112966005B CN202110250267.6A CN202110250267A CN112966005B CN 112966005 B CN112966005 B CN 112966005B CN 202110250267 A CN202110250267 A CN 202110250267A CN 112966005 B CN112966005 B CN 112966005B
- Authority
- CN
- China
- Prior art keywords
- time
- message
- timing
- delay time
- delay
- 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
Classifications
-
- 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/24552—Database cache management
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种定时消息发送方法、装置、计算机设备以及存储介质,本申请涉及信息安全技术领域,其方法包括:建立topic MSG‑OUT,获取并存储待处理定时消息于topic MSG‑OUT以供实时输出,若当前时间已到达待处理时间段,则实时获取topic MSG‑OUT中排位最前的定时消息的发送时间,获取发送时间的延迟时长,若延迟时长不为零,则判断延迟时长是否存在于预设的延迟时长集合中,若延迟时长存在于预设的延迟时长集合中,将定时消息置于topic MSG‑OUT中与延迟时长相对应的消息集群,将定时消息作为待消费消息以等待被读取及发送。本发明实施例降低了定时消息的发送成本,使得定时消息的发送方式更加灵活,并提高定时消息的发送效率。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种定时消息发送方法、装置、计算机设备以及存储介质。
背景技术
定时消息***在商业***中发挥重要的作用,比如给用户发送提示消息以提醒用户买车票,或是发送预约提醒的提示消息等,这些需要提示消息需要依据不同的预设发送时间定时发送。然而对于海量的定时消息,如何准确准时触发,并且兼顾效率是比较困难。
现有技术中一种基于数据库存储的方式进行定时消息发送的方法,在该方法中,所有定时消息存于db的表中,需要通过不断轮询数据库中定时消息的到期时间来确定何时发送定时消息,该方法对于某一时间点需要同时触发数百条消息进行发送的服务器端来说,在同一个时间从数据库里面调取数百条会遇到服务器端性能瓶颈,可能会花费较长时间轮询以调取定时消息,导致定时消息发送不及时。另一种基于redis存储定时消息并发送的方法,定时消息的数据可以快速调取,但由于redis使用内存存取数据,通过内存存取数据的成本远高于通过数据库存数据的方式,并且由于内存的使用率低,造成资源浪费。另外使用MQ的定时消息方法,由于MQ中的许多队列类型的中间件不支持定时消息,比如kafka,而RocketMQ虽然支持定时消息,但由于现有RocketMQ不支持任意时间类型的发送,比如最多仅支持2小时维度的定时消息发送,导致定时消息发送不够灵活。
鉴于此,急需提供一种定时消息发送方法以提高发送定时消息的效率,降低发送成本并使得定时消息发送方式更加灵活。
发明内容
本发明实施例提供了一种定时消息发送方法、装置、计算机设备以及存储介质,旨在解决相关技术中定时消息发送成本较高,定时消息发送方式不灵活等问题。
第一方面,本发明实施例提供了一种定时消息发送方法,其包括:获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;判断所述延迟时长是否为零;若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
第二方面,本发明实施例提供了一种定时消息发送装置,其包括:获取确定单元,用于获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;第一获取单元,用于获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;建立调用存储单元,用于建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;获取比较单元,用于若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;第一判断单元,用于判断所述延迟时长是否为零;第二判断单元,用于若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;第一置于等待单元,用于若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topicMSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
第三方面,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
第四方面,本发明实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如上所述的方法。
本发明实施例提供了一种定时消息发送方法、装置、计算机设备以及存储介质,基于所述方法,确定待处理时间段,并获取所述待处理时间段所对应所有所述定时消息作为待处理定时消息,建立topic MSG-OUT,调用并存储所述待处理定时消息于所述topic MSG-OUT以供实时输出,判断当前时间已到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,获取所述发送时间相对于所述当前时间的延迟时长,判断所述延迟时长是否为零,若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。本申请实施例的技术方案,基于RocketMQ作为中间件来发送定时消息,由于定时消息存储于存储硬盘中,降低了定时消息的发送成本,且所述预设的延迟时长集合包括多个不同时长的标准延迟时长,若定时消息的延迟时长存在于预设的延迟时长集合中,将定时消息根据其延迟时长来置于与延迟时长相对应的消息集群中,到达发送时间后读取及发送定时消息,使得定时消息的发送方式更加灵活,并提高定时消息的发送效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的定时消息发送方法的流程示意图;
图2为本发明实施例提供的定时消息发送方法的又一流程示意图;
图3为本发明实施例提供的定时消息发送方法的一子流程示意图;
图4为本发明实施例提供的定时消息发送方法的又一流程示意图;
图5为本发明实施例提供的定时消息发送方法的另一流程示意图;
图6为本发明定时消息发送装置的示意性框图;
图7为本发明定时消息发送装置的又一示意性框图;
图8为本发明定时消息发送装置的第二获取单元的子示意性框图;
图9为本发明定时消息发送装置的又一示意性框图;
图10为本发明定时消息发送装置的另一示意性框图;以及
图11为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的定时消息发送方法的流程示意图。本发明实施例的定时消息发送方法应用于服务器端,该服务器端配置有RocketMQ,定时消息通过RocketMQ存储于所述服务器端的存储硬盘中,所述RocketMQ中设有N个HOUR topic,N个所述HOUR topic中依照时间顺序依次存放预设时间周期内的所有定时消息,其中所述预设时间周期被分割为N个时间段,N个HOUR topic与N个时间段一一对应。
在一实施例中,RocketMQ中预先建立N个HOUR topic,N个所述HOUR topic分别记为HOUR(0),HOUR(1),HOUR(2)……HOUR(N-2)以及HOUR(N-1),N个所述HOURtopic用于依照时间顺序存放预设时间周期内的所有所述定时消息,其中,N>1,所述预设时间周期被分割为所述N个时间段,N个HOUR topic与N个时间段一一对应。在一实施例中,所述预设时间周期被平均分割为等量时长的N个时间段,每个所述HOUR topic对应存放等量时长的时间段内的定时消息,设置方法简单,例如预设时间周期为一天中0-24时,当取N=24,也即将一天中的24小时划分为24个时间段,一天中所有定时消息依照时间顺序依次存放于24个HOURtopic中,每小时均对应设立一个HOUR topic,例如定时时间为14:15的定时消息存放于HOUR(14)内。在另一实施例中,根据预设分割规则,所述预设时间周期被分割为非等量时长的N个时间段,每个所述HOUR topic对应存放非等量时长的时间段内的定时消息。所述预设分割规则为根据所述预设时间周期内所述定时消息数量的分布情况,将分布所述定时消息数量较少的一段连续时间作为N个时间段中的其中一个,将该时间段内的所有所述定时消息数量共同存入于一个对应的HOUR topic,可减少HOUR topic设立的数量,更便于管理。例如若预设时间周期为一天中0-24时,在定时时间为0-6时的连续时间段内需要发送的定时消息较少,而在定时时间为7-8时需要发送的定时消息较多,根据预设分割规则设定0-6时的连续时间段作为N个时间段中的第一个时间段,在定时时间为0-6时的连续时间段内需要发送的定时消息对应存放于HOUR(0)内,设定7-8时的连续时间段作为N个时间段中的第二个时间段,而将定时时间为7-8时需要发送的定时消息对应存放于HOUR(1)内。在其他实施例中,所述预设时间周期也可以为一周或一个月。
以定时消息发送方法应用于所述定时消息发送装置200为例对所述方法进行详细说明。
如图1所示,本发明实施例提供的定时消息发送方法的流程示意图,包括以下步骤S110-S180:
S110、获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段。
在一实施例中,获取当前时间,将所述当前时间所对应的时间段的下一个时间段作为待处理时间段,以获取所述待处理时间段所对应所有所述定时消息作为待处理定时消息。在本实施例中,所述待处理时间段为所述N个时间段中的其中一个,例如,预设时间周期为一天中0-24时,N=24,若当前时间为14点,则确定时间段15:00-15:59为待处理时间段。
S120、获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息。
在一实施例中,获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息。例如,预设时间周期为一天中0-24时,N=24,若当前时间为14点,获取所述待处理时间段15:00-15:59所对应的HOUR topic(15)内的所有所述定时消息为待处理定时消息。
S130、建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出。
在一实施例中,于所述存储硬盘建立topic MSG-OUT,所述topic MSG-OUT用于存储待处理时间段所对应的HOUR topic内的所有所述定时消息,并将其作为待处理定时消息,调用所述待处理定时消息,并将所述待处理定时消息存储于所述topic MSG-OUT以提供实时输出。在本实施例中,当前时间为14点,获取所述待处理时间段15:00-15:59所对应的HOUR topic(15)内的所有所述定时消息为所述待处理定时消息,调用所述待处理定时消息,并将所述待处理定时消息存储于所述topic MSG-OUT以提供实时输出。
S140、判断当前时间是否到达所述待处理时间段。
在一实施例中,判断当前时间是否到达所述待处理时间段,若当前时间到达所述待处理时间段,则执行步骤S150;若当前时间未到达所述待处理时间段,则等待当前时间到达所述待处理时间段。
S150、若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长。
在一实施例中,若当前时间到达所述待处理时间段,由于在所述topic MSG-OUT中的定时消息的定时时间可以有多个,且在N个所述HOUR topic和所述topic MSG-OUT中的所述定时消息均依照时间顺序存放,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,其中排位最前的定时消息表示在所述topic MSG-OUT中需要最先发送的定时消息,将所述当前时间与所述发送时间进行比较以得到延迟时长以判断所述延迟时长是否为零。
S160、判断所述延迟时长是否为零。
在一实施例中,通过判断所述延迟时长是否为零来判断所述定时消息是否达到发出时间,若所述延迟时长不为零,则执行步骤S170;若所述延迟时长为零,则执行步骤S161。
在一实施例如本实施例中,如图2所示,步骤S160之后还包括S161-S163。
S161、若所述延迟时长为零,则读取并发送所述topic MSG-OUT中的所述定时消息;
S162、判断所述topic MSG-OUT中的所述定时消息是否存在发送异常;
S163、若所述topic MSG-OUT中的所述定时消息存在发送异常,则发送异常警报并继续等待发送所述topic MSG-OUT中的下一个所述定时消息。
在一实施例中,若所述延迟时长为零,也即所述定时消息达到发出时间,读取并发送所述topic MSG-OUT中的所述定时消息,然而可能存在所述定时消息出现发送异常的情况,根据所述定时消息的发送状态,判断所述topic MSG-OUT中的所述定时消息是否存在发送异常,例如出现所述定时消息发送不出等。若所述topic MSG-OUT中的所述定时消息存在发送异常,则发送异常警报并继续等待发送所述topic MSG-OUT中的下一个所述定时消息;若所述topic MSG-OUT中的所述定时消息未存在发送异常,则继续读取并发送所述topicMSG-OUT中的下一个所述定时消息。
S170、若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长。
在一实施例中,由于通过所述RocketMQ将所述定时消息存储于所述存储硬盘,所述定时消息是依顺序写入所述存储硬盘并可以依顺序读取,所述RocketMQ为中间件,预设的延迟时长集合中所包括的标准延迟时长分别为1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h。若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,若所述延迟时长存在于预设的延迟时长集合中,则执行步骤S180;若所述延迟时长不存在于预设的延迟时长集合中,则执行步骤S191。
S180、若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
在一实施例中,若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。例如若当前时间为15点,HOURtopic(15)内的所有所述定时消息为待处理定时消息,若HOUR topic(15)内有一定时消息的定时时间为15:01,于当前时间15点,判断所述延迟时长为1m,所述延迟时长不为零,则判断所述延迟时长1m是否存在于预设的延迟时长集合中。由于预设的延时集合中包括延迟时长为1m的标准延迟时长,则将所述定时消息置于所述topic MSG-OUT中标准延迟时长为1s的消息集群,将所述定时消息作为待消费消息以等待被读取及发送,当当前时间为15:01,则获取并发送定时时间为15:01的所述定时消息。
在一实施例如本实施例中,如图3所示,步骤S170之后的步骤包括S181-S182。
S181、若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长;
S182、将所述定时消息置于所述topic MSG-OUT中与所述目标延迟时长相对应的消息集群作为所述待消费消息以等待被读取及发送。
在一实施例中,若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长,将所述定时消息置于所述topic MSG-OUT中与所述目标延迟时长相对应的消息集群作为所述待消费消息以等待被读取及发送。若当前时间为15:00,HOURtopic(15)内有一定时消息的定时时间为15:15,由于定时时间为15:15与当前时间的延迟时长为15m,所述延迟时长不为零,则判断所述延迟时长15m是否存在于预设的延迟时长集合中。由于预设的延迟时长集合中不包括为延迟时长为15m的标准延迟时长,则获取预设的延迟时长集合中与所述延迟时长15m最接近的标准延迟时长,在本实施例中,预设的延迟时长集合中与所述延迟时长15m最接近的标准延迟时长为10m,将定时时间为15:15的所述定时消息置于所述标准延迟时长为10m的消息集群作为待消费消息以等待被读取及发送。
在一实施例如本实施例中,如图4所示,步骤S181的具体步骤包括S183-S184。
S183、若所述延迟时长不存在于预设的延迟时长集合中,获取所述预设的延迟时长集合中所有小于所述延迟时长的标准延迟时长作为子延迟时长集合;
S184、获取所述子延迟时长集合中最大的标准延迟时长作为所述目标延迟时长。
在一实施例中,由于所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长。由于需选择小于所述延迟时长的标准延迟时长以免遗漏所述定时消息的发送,因此获取所述预设的延迟时长集合中比所述延迟时长小的子延迟时长集合,再获取所述子延迟时长集合中最大的标准延迟时长作为所述目标延迟时长。在本实施例中,若当前时间为15:00,HOUR topic内的定时消息的定时时间为15:15,所述延迟时长15m不存在于预设的延迟时长集合中,则获取所述预设的延迟时长集合中比所述延迟时长小的子延迟时长集合,所述子延迟时长集合包括标准延迟时长分别为1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m,在所述子延迟时长集合中最大的标准延迟时长10m作为所述目标延迟时长,所述标准延迟时长10m为与所述延迟时长最接近的标准延迟时长。
在一实施例如本实施例中,如图5所示,步骤S170之后还包括S191-S192:
S191、判断当前时间是否到达所述待消费消息所在消息集群的时间段起点;
S192、若当前时间到达所述待消费消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,并返回执行步骤S160。
在一实施例中,判断当前时间是否到达所述待消费消息所在消息集群的时间段起点,若当前时间到达所述待消费消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,并返回执行步骤S160,若当前时间未到达所述待消费消息所在消息集群的时间段起点,则继续等待直到直到当前时间到达所述待消费消息所在消息集群的时间段起点。在本实施例中,若当前时间为15:00,获取HOURtopic(15)内的定时消息的定时时间为15:151s,定时时间为15:151s的所述定时消息置于标准延迟时长为10m的消息集群中,经过10m后,当前时间为15:10,到达定时时间为15:151s的所述定时消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,以定时时间为15:151s的所述定时消息为例,所述当前时间与所述发送时间进行比较以得到延迟时长为5m 1s,所述延迟时长不为零,且所述延迟时长不存在于预设的延迟时长集合中,获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长为5m,在经过5m后,当前时间为15:15,所述当前时间与所述发送时间进行比较以得到延迟时长为1s,所述延迟时长1s为标准延迟时长,则将定时时间为15:151s的所述定时消息置于与延迟时长1s相对应的消息集群中,1s后,也即当前时间为15:151s时,所述延迟时长为零,定时时间为15:151s的所述定时消息被读取及发送。
本发明所提供的所述方法,确定待处理时间段,并获取所述待处理时间段所对应所有所述定时消息作为待处理定时消息,于所述存储硬盘建立topic MSG-OUT,调用并存储所述待处理定时消息于所述topic MSG-OUT以供实时输出,判断当前时间已到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,获取所述发送时间相对于所述当前时间的延迟时长,判断所述延迟时长是否为零,若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。基于RocketMQ作为中间件来发送定时消息,由于定时消息存储于存储硬盘中,降低了定时消息的发送成本,且所述预设的延迟时长集合包括多个不同时长的标准延迟时长,若定时消息的延迟时长存在于预设的延迟时长集合中,将定时消息根据其延迟时长来置于与延迟时长相对应的消息集群中,到达发送时间后读取及发送定时消息,使得定时消息的发送方式更加灵活,并提高定时消息的发送效率。
本申请可应用于智慧政务/智慧城管/智慧社区/智慧安防/智慧物流/智慧医疗/智慧教育/智慧环保/智慧交通场景中,例如在以上场景中需要给用户发送定时消息时,提供了一种降低了定时消息的发送成本,且使得定时消息的发送方式更加灵活,提高定时消息的发送效率的方法,从而推动智慧城市的建设。
图6是本发明实施例提供的定时消息发送装置200的示意性框图。如图6所示,所述定时消息发送装置200包括:获取确定单元210、第一获取单元220、建立调用存储单元230、获取比较单元240、第一判断单元250、第二判断单元260以及第一置于等待单元270。
所述获取确定单元210,用于获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;
所述第一获取单元220,用于获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;
所述建立调用存储单元230,用于建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;
所述获取比较单元240,用于若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;
所述第一判断单元250,用于判断所述延迟时长是否为零;
所述第二判断单元260,用于若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;
所述第一置于等待单元270,用于若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
在某些实施例,例如本实施例中,参见图7,所述定时消息发送装置200还包括第二获取单元271以及第二置于等待单元272。
所述第二获取单元271,用于若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长;
所述第二置于等待单元272,用于将所述定时消息置于所述topic MSG-OUT中与所述目标延迟时长相对应的消息集群作为所述待消费消息以等待被读取及发送。
在某些实施例,例如本实施例中,参见图8,所述第二获取单元271包括第一获取子单元273以及第二获取子单元274。
所述第一获取子单元273,用于若所述延迟时长不存在于预设的延迟时长集合中,获取所述预设的延迟时长集合中所有小于所述延迟时长的标准延迟时长作为子延迟时长集合;
所述第二获取子单元274,用于获取所述子延迟时长集合中最大的标准延迟时长作为所述目标延迟时长。
在某些实施例,例如本实施例中,参见图9,所述定时消息发送装置200还包括第三判断单元281以及获取返回单元282。
所述第三判断单元281,用于判断当前时间是否到达所述待消费消息所在消息集群的时间段起点;
所述获取返回单元282,用于若当前时间到达所述待消费消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,并返回执行判断所述延迟时长是否为零的步骤。
在某些实施例,例如本实施例中,参见图10,所述定时消息发送装置200还包括读取发送单元251、第四判断单元252以及发送读取发送单元253。
所述读取发送单元251,用于若所述延迟时长为零,则读取并发送所述topic MSG-OUT中的所述定时消息;
所述第四判断单元252,用于判断所述topic MSG-OUT中的所述定时消息是否存在发送异常;
所述发送读取发送单元253,用于若所述topic MSG-OUT中的所述定时消息存在发送异常,则发送异常警报并继续等待发送所述topic MSG-OUT中的下一个所述定时消息。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述定时消息发送装置200和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述定时消息发送装置200可以实现为一种计算机程序的形式,该计算机程序可以在如图11所示的计算机设备300上运行。
请参阅图11,图11是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备300为服务器端。
参阅图11,该计算机设备300包括通过***总线301连接的处理器302、存储器和接口307,其中,存储器可以包括非易失性存储介质303和内存储器304。
该非易失性存储介质303可存储操作***3031和计算机程序3032。该计算机程序3032被执行时,可使得处理器302执行一种定时消息发送方法。
该处理器302用于提供计算和控制能力,以支撑整个计算机设备300的运行。
该内存储器304为非易失性存储介质303中的计算机程序3032的运行提供环境,该计算机程序3032被处理器302执行时,可使得处理器302执行一种定时消息发送方法。
该接口305用于与其它设备进行通信。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备300的限定,具体的计算机设备300可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器302用于运行存储在存储器中的计算机程序3032,以实现如下步骤:获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;判断所述延迟时长是否为零;若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
在某些实施例,例如本实施例中,处理器302在实现所述若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中的步骤之后,具体实现如下步骤:若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长;将所述定时消息置于所述topic MSG-OUT中与所述目标延迟时长相对应的消息集群作为所述待消费消息以等待被读取及发送。
在某些实施例,例如本实施例中,处理器302在实现所述若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长的步骤时,具体实现如下步骤:若所述延迟时长不存在于预设的延迟时长集合中,获取所述预设的延迟时长集合中所有小于所述延迟时长的标准延迟时长作为子延迟时长集合;获取所述子延迟时长集合中最大的标准延迟时长作为所述目标延迟时长。
在某些实施例,例如本实施例中,处理器302在实现判断所述延迟时长是否为零的步骤之后,具体实现如下步骤:判断当前时间是否到达所述待消费消息所在消息集群的时间段起点;若当前时间到达所述待消费消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,并返回执行判断所述延迟时长是否为零的步骤。
在某些实施例,例如本实施例中,处理器302在实现判断所述延迟时长是否为零的步骤之后,具体实现如下步骤:若所述延迟时长为零,则读取并发送所述topic MSG-OUT中的所述定时消息;判断所述topic MSG-OUT中的所述定时消息是否存在发送异常;若所述topic MSG-OUT中的所述定时消息存在发送异常,则发送异常警报并继续等待发送所述topic MSG-OUT中的下一个所述定时消息。
应当理解,在本申请实施例中,处理器302可以是中央处理单元(CentralProcessing Unit,CPU),该处理器302还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机***中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有多个计算机程序,所述多个计算机程序当分别被多个处理器执行时可共同实现上述的步骤定时消息发送方法的各种实施例。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种定时消息发送方法,其特征在于,应用于配置有RocketMQ的服务器端,所述RocketMQ中设有N个HOUR topic,N个所述HOUR topic中依照时间顺序依次存放预设时间周期内的所有定时消息,其中所述预设时间周期被分割为N个时间段,N个HOUR topic与N个时间段一一对应,所述方法包括:
获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;
获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;
建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;
若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;
判断所述延迟时长是否为零;
若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;
若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topicMSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
2.如权利要求1所述的定时消息发送方法,其特征在于,所述若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中的步骤之后,还包括:
若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长;
将所述定时消息置于所述topic MSG-OUT中与所述目标延迟时长相对应的消息集群作为所述待消费消息以等待被读取及发送。
3.如权利要求2所述的定时消息发送方法,其特征在于,所述若所述延迟时长不存在于预设的延迟时长集合中,则获取预设的延迟时长集合中与所述延迟时长最接近的标准延迟时长作为目标延迟时长的步骤包括:
若所述延迟时长不存在于预设的延迟时长集合中,获取所述预设的延迟时长集合中所有小于所述延迟时长的标准延迟时长作为子延迟时长集合;
获取所述子延迟时长集合中最大的标准延迟时长作为所述目标延迟时长。
4.如权利要求1所述的定时消息发送方法,其特征在于,所述判断所述延迟时长是否为零的步骤之后,还包括:
判断当前时间是否到达所述待消费消息所在消息集群的时间段起点;
若当前时间到达所述待消费消息所在消息集群的时间段起点,则实时获取所述待消费消息所在消息集群中排位最前的定时消息的发送时间,并返回执行判断所述延迟时长是否为零的步骤。
5.如权利要求1所述的定时消息发送方法,其特征在于,所述判断所述延迟时长是否为零的步骤之后,还包括:
若所述延迟时长为零,则读取并发送所述topic MSG-OUT中的所述定时消息;
根据所述定时消息的发送状态,判断所述topic MSG-OUT中的所述定时消息是否存在发送异常;
若所述topic MSG-OUT中的所述定时消息存在发送异常,则发送异常警报并继续等待发送所述topic MSG-OUT中的下一个所述定时消息。
6.如权利要求1所述的定时消息发送方法,其特征在于,所述预设时间周期被平均分割为等量时长的N个时间段,每个所述HOUR topic对应存放等量时长的时间段内的定时消息。
7.如权利要求1所述的定时消息发送方法,其特征在于,根据预设分割规则,所述预设时间周期被分割为非等量时长的N个时间段,每个所述HOUR topic对应存放非等量时长的时间段内的定时消息。
8.一种定时消息发送装置,其特征在于,应用于配置有RocketMQ的服务器端,所述RocketMQ中设有N个HOUR topic,N个所述HOUR topic中依照时间顺序依次存放预设时间周期内的所有定时消息,其中所述预设时间周期被分割为N个时间段,N个HOUR topic与N个时间段一一对应,所述定时消息发送装置包括:
获取确定单元,用于获取当前时间,确定所述当前时间所对应的时间段的下一个时间段作为待处理时间段;
第一获取单元,用于获取所述待处理时间段所对应的所有所述定时消息作为待处理定时消息;
建立调用存储单元,用于建立topic MSG-OUT并将所述待处理定时消息存储于所述topic MSG-OUT以供实时输出;
获取比较单元,用于若当前时间到达所述待处理时间段,则实时获取所述topic MSG-OUT中排位最前的定时消息的发送时间,并将所述当前时间与所述发送时间进行比较以得到延迟时长;
第一判断单元,用于判断所述延迟时长是否为零;
第二判断单元,用于若所述延迟时长不为零,则判断所述延迟时长是否存在于预设的延迟时长集合中,所述预设的延迟时长集合包括多个不同时长的标准延迟时长;
第一置于等待单元,用于若所述延迟时长存在于预设的延迟时长集合中,则将所述定时消息置于所述topic MSG-OUT中与所述延迟时长相对应的消息集群,将所述定时消息作为待消费消息以等待被读取及发送。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110250267.6A CN112966005B (zh) | 2021-03-08 | 2021-03-08 | 定时消息发送方法、装置、计算机设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110250267.6A CN112966005B (zh) | 2021-03-08 | 2021-03-08 | 定时消息发送方法、装置、计算机设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112966005A CN112966005A (zh) | 2021-06-15 |
CN112966005B true CN112966005B (zh) | 2023-07-25 |
Family
ID=76276938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110250267.6A Active CN112966005B (zh) | 2021-03-08 | 2021-03-08 | 定时消息发送方法、装置、计算机设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112966005B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242744B (zh) * | 2022-06-15 | 2024-02-02 | 艺龙网信息技术(北京)有限公司 | 自定义时间的定时消息发送方法、***、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415759A (zh) * | 2017-02-09 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 消息的处理方法、装置和电子设备 |
CN109766200A (zh) * | 2018-12-31 | 2019-05-17 | 北京明朝万达科技股份有限公司 | 一种消息队列处理方法、装置、设备及存储介质 |
CN111782365A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 定时任务处理方法、装置、设备及存储介质 |
CN111796946A (zh) * | 2020-06-22 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 数据处理方法、装置、设备及存储介质 |
-
2021
- 2021-03-08 CN CN202110250267.6A patent/CN112966005B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415759A (zh) * | 2017-02-09 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 消息的处理方法、装置和电子设备 |
CN109766200A (zh) * | 2018-12-31 | 2019-05-17 | 北京明朝万达科技股份有限公司 | 一种消息队列处理方法、装置、设备及存储介质 |
CN111796946A (zh) * | 2020-06-22 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111782365A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 定时任务处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112966005A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112508205B (zh) | 一种联邦学习调度方法、装置及*** | |
CN108449410B (zh) | 一种云平台中消息管理方法、***及相关装置 | |
CN109246229B (zh) | 一种分发资源获取请求的方法和装置 | |
CN108540568B (zh) | 计算能力共享方法及智能设备 | |
CN109547807B (zh) | 一种基于直播的信息处理方法、装置及服务器 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN111478963A (zh) | 消息推送方法、装置、电子设备及计算机可读存储介质 | |
CN112966005B (zh) | 定时消息发送方法、装置、计算机设备以及存储介质 | |
US10003617B2 (en) | Terminal and application synchronization method thereof | |
CN108536544B (zh) | 基于数据库消息队列的消费方法、装置、服务器和介质 | |
CN113760468A (zh) | 分布式选举方法、装置、***和介质 | |
CN110365598B (zh) | 心跳消息发送的方法、装置、服务器、终端及存储介质 | |
CN113242149B (zh) | 长连接配置方法、装置、设备、存储介质和程序产品 | |
CN110069533B (zh) | 一种基于区块链的事件订阅方法及装置 | |
CN110008187B (zh) | 文件传输调度方法、装置、设备及计算机可读存储介质 | |
CN109657164B (zh) | 发布消息的方法、装置及存储介质 | |
CN109067864B (zh) | 通知消息推送方法、装置及电子设备 | |
CN109308219B (zh) | 任务处理方法、装置及分布式计算机*** | |
CN105978853B (zh) | 一种会话调度方法、调度服务器及终端 | |
CN114884936A (zh) | 终端设备的数据处理方法、装置、设备及介质 | |
CN107124353B (zh) | 一种消息处理的方法、装置、计算机装置及存储介质 | |
CN113988559B (zh) | 用于问卷投放的免打扰方法及装置 | |
CN112187667B (zh) | 数据下载方法、装置、设备及存储介质 | |
CN106550021B (zh) | 推送消息的推送方法及装置 | |
CN110489231B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |