一种消息延时投递方法、装置及设备制造方法及图纸

技术编号:21059653 阅读:28 留言:0更新日期:2019-05-08 06:40
本发明专利技术实施例提供了一种消息延时投递方法、装置及设备,其中,该方法可以包括:获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至消息服务端的内存中;目标投递时间包括任意时间点;针对各个消息,将该消息对应的索引信息发送至消息消费端的消费队列,以使消息消费端根据索引信息从消息服务端的Commit Log中获取该消息,并对消息进行消费。通过本发明专利技术实施例提供的消息延时投递方法、装置及设备,能够扩展延时投递过程的应用范围。

A Method, Device and Equipment for Delayed Message Delay Delivery

【技术实现步骤摘要】
一种消息延时投递方法、装置及设备
本专利技术涉及互联网
,特别是涉及一种消息延时投递方法、装置及设备。
技术介绍
消息系统因其传统的功能特点:系统间调用的异步解耦、减低系统的复杂度、流量的削峰填谷,便于业务弹性伸缩、易于实现最终一致性系统,避免分布式事务对性能的影响、支持P2P(点对点的调用)和pub/sub(发布/订阅)模式、减少RPC(RemoteProcedureCallProtocol,远程过程调用协议)的多次调用)等。目前已经广泛使用于互联网企业,各类业务系统都有它的身影。另外随着业务的快速增长,企业内部需要大量数据的同步传输,流式计算等应用都需要非常稳定高效的传输通道给予支持,消息系统在其中充当了重要的角色。而在开发业务时,某些业务场景需要消息定时发送或延时发送,如飞信的短信定时发送需求。此时,就需要消息系统对消息进行延时投递。现有的消息延时投递过程中,仅支持有限个固定的延时维度,无法准确地满足有限个固定延时维度之外的延时需求,如此使得使得应用范围受限。
技术实现思路
本专利技术实施例的目的在于提供一种消息延时投递方法、装置及设备,以扩展延时投递过程的应用范围。具体技术方案如下:第一方面,本专利技术实施例提供了一种消息延时投递方法,应用于消息服务端,包括:获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至所述消息服务端的内存中;所述目标投递时间包括任意时间点;针对各个消息,将该消息对应的所述索引信息发送至消息消费端的消费队列,以使所述消息消费端根据所述索引信息从所述消息服务端的CommitLog中获取该消息,并对所述消息进行消费。可选的,在所述获取达到目标投递时间的各个消息的各个索引信息之前,所述方法还包括:针对各个消息,将该消息保存至所述CommitLog,并将该消息的所述索引信息保存至投递时间段对应的Block文件,其中,所述投递时间段是所述目标投递时间位于的时间段。可选的,在所述获取达到目标投递时间的各个消息的各个索引信息之前,所述方法还包括:针对各个消息,将该消息保存至投递时间段对应的Block文件,并将该消息的所述索引信息保存至投递时间段对应的Block文件;其中,所述投递时间段是所述目标投递时间位于的时间段。可选的,在所述获取达到目标投递时间的各个消息的各个索引信息之后,所述方法还包括:针对各个消息,根据该消息对应的索引信息,从所述Block文件中获取该消息,并将该消息发送至所述消息服务端的所述CommitLog。可选的,在所述将该消息的所述索引信息保存至投递时间段对应的Block文件之后,所述方法还包括:当到达所述投递时间段的开始时间点时,将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存。可选的,所述将该消息的所述索引信息保存至投递时间段对应的Block文件,包括:将该消息的所述索引信息保存至索引文件,所述索引文件是所述投递时间段对应的所述Block文件的子文件;所述将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存,包括:从所述Block文件中获取包括各个索引信息的所述索引文件;将所述索引文件加载至所述消息服务端的内存。可选的,在所述将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存之后,所述方法还包括:对所述投递时间段进行划分,得到所述投递时间段对应的各个投递时间;针对各个投递时间,将该投递时间对应的索引信息保存至该投递时间对应的链表槽位;所述获取达到目标投递时间的各个消息的各个索引信息,包括:针对各个消息,确定该消息的目标投递时间对应的目标链表槽位;所述目标投递时间包括在所述投递时间段对应的各个投递时间内;从所述目标链表槽位中获取该消息的所述索引信息。第二方面,本专利技术实施例提供了一种消息延时投递装置,应用于消息服务端,包括:第一获取模块,用于获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至所述消息服务端的内存中;所述目标投递时间包括任意时间点;第一发送模块,用于针对各个消息,将该消息对应的所述索引信息发送至消息消费端的消费队列,以使所述消息消费端根据所述索引信息从所述消息服务端的CommitLog中获取该消息,并对所述消息进行消费。可选的,所述装置还包括:第一保存模块,用于针对各个消息,将该消息保存至所述CommitLog,并将该消息的所述索引信息保存至投递时间段对应的Block文件,其中,所述投递时间段是所述目标投递时间位于的时间段。可选的,所述装置还包括:第二保存模块,用于针对各个消息,将该消息保存至投递时间段对应的Block文件,并将该消息的所述索引信息保存至投递时间段对应的Block文件;其中,所述投递时间段是所述目标投递时间位于的时间段。可选的,所述装置还包括:第二获取模块,用于针对各个消息,根据该消息对应的索引信息,从所述Block文件中获取该消息;第二发送模块,用于将该消息发送至所述消息服务端的所述CommitLog。可选的,所述装置还包括:加载模块,用于当到达所述投递时间段的开始时间点时,将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存。可选的,所述第一保存模块,具体用于将该消息的所述索引信息保存至索引文件,所述索引文件是所述投递时间段对应的所述Block文件的子文件;或者,所述第二保存模块,具体用于将该消息的所述索引信息保存至索引文件;所述加载模块,具体用于从所述Block文件中获取包括各个索引信息的所述索引文件;将所述索引文件加载至所述消息服务端的内存。可选的,所述装置还包括:划分模块,用于对所述投递时间段进行划分,得到所述投递时间段对应的各个投递时间;第三保存模块,用于针对各个投递时间,将该投递时间对应的索引信息保存至该投递时间对应的链表槽位;所述第一获取模块,具体用于针对各个消息,确定该消息的目标投递时间对应的目标链表槽位;所述目标投递时间包括在所述投递时间段对应的各个投递时间内;从所述目标链表槽位中获取该消息的所述索引信息。第三方面,本专利技术实施例提供了一种消息延时投递设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序时,实现上述第一方面所述的方法步骤。在本专利技术实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法步骤。在本专利技术实施的又一方面,本专利技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法步骤。本专利技术实施例提供的消息延时投递方法、装置及设备,可以获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至消息服务端的内存中;目标投递时间包括任意时间点;针对各个消息,将该消息对应的索引信息发送至消息消费端的消费队列,以使消息消费端根据索引信息从消息服务端的CommitLog中获取该消息,并对消息进行消费。本发本文档来自技高网...

【技术保护点】
1.一种消息延时投递方法,其特征在于,应用于消息服务端,包括:获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至所述消息服务端的内存中;所述目标投递时间包括任意时间点;针对各个消息,将该消息对应的所述索引信息发送至消息消费端的消费队列,以使所述消息消费端根据所述索引信息从所述消息服务端的Commit Log中获取该消息,并对所述消息进行消费。

【技术特征摘要】
1.一种消息延时投递方法,其特征在于,应用于消息服务端,包括:获取达到目标投递时间的各个消息的各个索引信息;各个索引信息被预先加载至所述消息服务端的内存中;所述目标投递时间包括任意时间点;针对各个消息,将该消息对应的所述索引信息发送至消息消费端的消费队列,以使所述消息消费端根据所述索引信息从所述消息服务端的CommitLog中获取该消息,并对所述消息进行消费。2.根据权利要求1所述的方法,其特征在于,在所述获取达到目标投递时间的各个消息的各个索引信息之前,所述方法还包括:针对各个消息,将该消息保存至所述CommitLog,并将该消息的所述索引信息保存至投递时间段对应的Block文件,其中,所述投递时间段是所述目标投递时间位于的时间段。3.根据权利要求1所述的方法,其特征在于,在所述获取达到目标投递时间的各个消息的各个索引信息之前,所述方法还包括:针对各个消息,将该消息保存至投递时间段对应的Block文件,并将该消息的所述索引信息保存至投递时间段对应的Block文件;其中,所述投递时间段是所述目标投递时间位于的时间段。4.根据权利要求3所述的方法,其特征在于,在所述获取达到目标投递时间的各个消息的各个索引信息之后,所述方法还包括:针对各个消息,根据该消息对应的索引信息,从所述Block文件中获取该消息,并将该消息发送至所述消息服务端的所述CommitLog。5.根据权利要求2-4任一所述的方法,其特征在于,在所述将该消息的所述索引信息保存至投递时间段对应的Block文件之后,所述方法还包括:当到达所述投递时间段的开始时间点时,将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存。6.根据权利要求5所述的方法,其特征在于,所述将该消息的所述索引信息保存至投递时间段对应的Block文件,包括:将该消息的所述索引信息保存至索引文件,所述索引文件是所述投递时间段对应的所述Block文件的子文件;所述将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存,包括:从所述Block文件中获取包括各个索引信息的所述索引文件;将所述索引文件加载至所述消息服务端的内存。7.根据权利要求5所述的方法,其特征在于,在所述将所述投递时间段对应的所述Block文件中保存的各个消息的各个索引信息,加载至所述消息服务端的内存之后,所述方法还包括:对所述投递时间段进行划分,得到所述投递时间段对应的各个投递时间;针对各个投递时间,将该投递时间对应的索引信息保存至该投递时间对应的链表槽位;所述获取达到目标投递时间的各个消息的各个索引信息,包括:针对各个消息,确定该消息的目标投递时间对应的目标链表槽位;所述目标投递时间包括在所述投递时间段对应的各个投递时间内;从所述目标链表槽位中获取该消息的所述索引信息。...

【专利技术属性】
技术研发人员:冯浩虞开元
申请(专利权)人:北京爱奇艺科技有限公司
类型:发明
国别省市:北京,11

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

1