一种消息推送方法和装置转让专利

申请号 : CN201910002453.0

文献号 : CN109787884B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 肖甜丁海

申请人 : 中国联合网络通信集团有限公司

摘要 :

本发明实施例提供一种消息推送方法和装置,涉及消息推送领域,能够在处理延迟信息的推送时节省资源。该方法包括:获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;当确定推送类型为延迟推送时,根据目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息及其写入时间;目标文件中包括至少两个推送消息,且至少两个待推送消息的消息识别码连续;计算目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;当确定时间差大于等于预设时间间隔时,根据目标消息识别码按照预设规则获取推送指令对应的推送消息并推送。

权利要求 :

1.一种消息推送方法,其特征在于,包括:获取客户端发送的推送指令;所述推送指令至少携带有目标消息识别码和推送类型;

当确定所述推送类型为延迟推送时,根据所述目标消息识别码从当前时刻对应的目标文件中查找与所述目标消息识别码所属的推送消息及其写入时间;所述目标文件中包括至少两个推送消息,且所述至少两个待推送消息的消息识别码连续;

计算所述目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;

当确定所述时间差大于等于预设时间间隔时,根据所述目标消息识别码按照预设规则获取所述推送指令对应的推送消息并推送;

所述根据所述目标消息识别码从当前时刻对应的目标文件中查找与所述目标消息识别码所属的推送消息及其写入时间包括:根据所述目标消息识别码从当前时刻对应的目标文件中的所有子文件中查找所述目标消息识别码所属的推送消息所属的目标子文件;

根据所述目标消息识别码从所述目标子文件中的所有消息组中获取所述目标消息识别码所属的推送消息所属的目标消息组;

将所述目标消息组的写入时间确定为所述目标消息识别码所述的推送消息的写入时间;所述目标消息组的写入时间存储在所述目标子文件中;

所述目标文件中任一个子文件中包括第一预设个数个推送消息;所述子文件中任一消息组包括写入时间相同且识别码连续不中断的第二预设个数个推送消息。

2.根据权利要求1所述的消息推送方法,其特征在于,所述根据所述目标消息识别码从当前时刻对应的目标文件中的所有子文件中查找所述目标消息识别码所属的推送消息所属的目标子文件包括:

当所述目标文件中任一子文件的文件识别码为所述任一子文件中包括的所有推送消息的消息识别码中最小值时,将所述目标文件中所有子文件的文件识别码中小于等于所述目标消息识别码的文件识别码中,最大的文件识别码所属的子文件确定为所述目标子文件;

当所述目标文件中任一子文件的文件识别码为所述任一子文件中包括的所有推送消息的消息识别码中最大值时,将所述目标文件中所有子文件的文件识别码中大于等于所述目标消息识别码的文件识别码中,最小的文件识别码所属的子文件确定为所述目标子文件。

3.根据权利要求1所述的消息推送方法,其特征在于,根据所述目标消息识别码从所述目标子文件中的所有消息组中获取所述目标消息识别码所属的推送消息所属的目标消息组包括:

当所述目标子文件中任一消息组的组识别码为所述任一消息组中包括的所有推送消息的消息识别码中最小值时,将所述目标文件中所有消息组的组识别码中小于等于所述目标消息识别码的组识别码中,最大的组识别码所属的消息组确定为所述目标消息组;

当所述目标子文件中任一消息组的组识别码为所述任一消息组中包括的所有推送消息的消息识别码中最大值时,将所述目标文件中所有消息组的组识别码中大于等于所述目标消息识别码的组识别码中,最小的组识别码所属的消息组确定为所述目标消息组。

4.根据权利要求1所述的消息推送方法,其特征在于,所述目标消息识别码所属的推送消息为所述推送指令对应的推送消息中首个推送的推送消息;所述推送指令还包括推送个数;所述根据所述目标消息识别码按照预设规则获取所述推送指令对应的推送消息包括:当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,从所述目标文件中的所述目标消息识别码所属的推送消息开始,按照识别码从小到大的顺序依次选取所述推送个数个推送消息作为第一目标推送消息,并将所述第一目标推送消息确定为所述推送指令对应的推送消息;

当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,从所述目标文件中的所述目标消息识别码所属的推送消息开始,按照识别码从大到小的顺序依次选取所述推送个数个推送消息作为第二目标推送消息,并将所述预设所述第二目标推送消息确定为所述推送指令对应的推送消息。

5.根据权利要求1所述的消息推送方法,其特征在于,还包括:当确定所述推送类型为实时推送时,根据所述目标消息识别码从内存中获取所述目标识别码所属的推送消息,并推送所述目标识别码所属的推送消息。

6.根据权利要求1所述的消息推送方法,其特征在于,还包括:当确定所述时间差小于所述延迟间隔时,重新获取推送消息指令。

7.根据权利要求1所述的消息推送方法,其特征在于,当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,推送所述推送指令对应的推送消息之后还包括:将所述推送指令对应的推送消息的识别码中的最大值发送给所述客户端;

当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,推送所述推送指令对应的推送消息之后还包括:将所述推送指令对应的推送消息的识别码中的最小值发送给所述客户端。

8.一种消息推送装置,其特征在于,包括:获取模块、判断模块、查找模块、计算模块和推送模块;

所述获取模块,用于获取客户端发送的推送指令;所述推送指令至少携带有目标消息识别码和推送类型;

当所述判断模块确定所述获取模块获取的所述推送类型为延迟推送时,所述查找模块用于根据所述获取模块获取的所述目标消息识别码从当前时刻对应的目标文件中查找与所述目标消息识别码所属的推送消息及其写入时间;所述目标文件中包括至少两个推送消息,且所述至少两个待推送消息的消息识别码连续;

所述计算模块,用于计算所述查找模块查找到的所述目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;

当所述判断模块确定所述计算模块计算的所述时间差大于等于预设时间间隔时,所述查找模块用于根据所述获取模块获取的所述目标消息识别码按照预设规则获取所述推送指令对应的推送消息并交由所述推送模块推送;

所述查找模块包括子文件查找单元、消息组查找单元和写入时间确定模块;

所述子文件查找单元,用于根据所述获取模块获取的所述目标消息识别码从当前时刻对应的目标文件中的所有子文件中查找所述目标消息识别码所属的推送消息所属的目标子文件;

所述消息组查找单元,用于根据所述获取模块获取的所述目标消息识别码从所述子文件查找单元查找到的所述目标子文件中的所有消息组中获取所述目标消息识别码所属的推送消息所属的目标消息组;

所述写入时间确定模块,用于将所述消息组查找单元查找到的所述目标消息组的写入时间确定为所述目标消息识别码所述的推送消息的写入时间;所述目标消息组的写入时间存储在所述目标子文件中;

所述目标文件中任一个子文件中包括第一预设个数个推送消息;所述子文件中任一消息组包括写入时间相同且识别码连续不中断的第二预设个数个推送消息。

9.根据权利要求8所述的消息推送装置,其特征在于,所述子文件查找模块具体用于:当所述目标文件中任一子文件的文件识别码为所述任一子文件中包括的所有推送消息的消息识别码中最小值时,将所述目标文件中所有子文件的文件识别码中小于等于所述获取模块获取的所述目标消息识别码的文件识别码中,最大的文件识别码所属的子文件确定为所述目标子文件;

当所述目标文件中任一子文件的文件识别码为所述任一子文件中包括的所有推送消息的消息识别码中最大值时,将所述目标文件中所有子文件的文件识别码中大于等于所述获取模块获取的所述目标消息识别码的文件识别码中,最小的文件识别码所属的子文件确定为所述目标子文件。

10.根据权利要求8所述的消息推送装置,其特征在于,所述消息组查找模块具体用于:当所述目标子文件中任一消息组的组识别码为所述任一消息组中包括的所有推送消息的消息识别码中最小值时,将所述目标文件中所有消息组的组识别码中小于等于所述目标消息识别码的组识别码中,最大的组识别码所属的消息组确定为所述目标消息组;

当所述目标子文件中任一消息组的组识别码为所述任一消息组中包括的所有推送消息的消息识别码中最大值时,将所述目标文件中所有消息组的组识别码中大于等于所述目标消息识别码的组识别码中,最小的组识别码所属的消息组确定为所述目标消息组。

11.根据权利要求8所述的消息推送装置,其特征在于,所述目标消息识别码所属的推送消息为所述推送指令对应的推送消息中首个推送的推送消息;所述推送指令还包括推送个数;所述查找模块具体用于:

当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,从所述目标文件中的所述获取模块获取的所述目标消息识别码所属的推送消息开始,按照识别码从小到大的顺序依次选取所述推送个数个推送消息作为第一目标推送消息,并将所述第一目标推送消息确定为所述推送指令对应的推送消息;

当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,从所述目标文件中的所述获取模块获取的所述目标消息识别码所属的推送消息开始,按照识别码从大到小的顺序依次选取所述推送个数个推送消息作为第二目标推送消息,并将所述预设所述第二目标推送消息确定为所述推送指令对应的推送消息。

12.根据权利要求8所述的消息推送装置,其特征在于,还包括:当所述判断模块确定所述推送类型为实时推送时,所述查找模块还用于根据所述获取模块获取的所述目标消息识别码从内存中获取所述目标识别码所属的推送消息,并交由推送模块推送所述目标识别码所属的推送消息。

13.根据权利要求8所述的消息推送装置,其特征在于,还包括:当所述判断模块确定所述计算模块计算的所述时间差小于所述延迟间隔时,所述获取模块还用于重新获取推送消息指令。

14.根据权利要求8所述的消息推送装置,其特征在于,当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,所述推送模块在推送所述推送指令对应的推送消息之后还包括:将所述推送指令对应的推送消息的识别码中的最大值发送给所述客户端;

当所述目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,所述推送模块在推送所述推送指令对应的推送消息之后还包括:将所述推送指令对应的推送消息的识别码中的最小值发送给所述客户端。

15.一种消息推送装置,其特征在于,包括存储器、处理器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接;当所述消息推送装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述装置执行如权利要求1-7任一项所述的消息推送方法。

16.一种计算机存储介质,其特征在于,所述计算机存储介质包括计算机执行指令,当所述计算机执行指令在计算机上运行时,使得所述计算机执行如权利要求1-7任一项所述的消息推送方法。

说明书 :

一种消息推送方法和装置

技术领域

[0001] 本发明涉及消息发送领域,尤其涉及一种消息推送方法和装置。

背景技术

[0002] 目前消息推送平台向特定用户发送消息时,可以发送实时推送消息也可以发送延迟推送消息。其中,实时推送消息是指消息形成之后即可被发送给特定用户,以使特定用户
可实时获取到的消息;相应地,延迟推送消息是指消息形成之后,若处于免打扰时间段内则
暂停发送,直到处于非免打扰时间之后才发送,使得特定用户获取的消息。现有对于实现消
息延迟推送的方式主要有如下两种:内存方案:消息全部存储在内存中,延迟推送时,从内
存中检索;缺点是消息量巨大时内存占用太大,且重启后丢失。数据库方案:消息存储在数
据库中,延迟推送时,从数据库中检索消息;缺点是,检索过程复杂,消耗资源大,且消息量
大时,存取过程不够快捷。

发明内容

[0003] 本发明的实施例提供一种消息推送方法,用于能够从文件中快捷的推送延迟推送消息,节省资源。
[0004] 为达到上述目的,本发明的实施例采用如下技术方案:
[0005] 第一方面,提供一种消息推送方法,包括:
[0006] 获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;
[0007] 当确定推送类型为延迟推送时,根据目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息及其写入时间;目标文件中包括至少两个推送消
息,且至少两个待推送消息的消息识别码连续;
[0008] 计算目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;
[0009] 当确定时间差大于等于预设时间间隔时,根据目标消息识别码按照预设规则获取推送指令对应的推送消息并推送。
[0010] 第二方面,提供一种消息推送装置,包括:获取模块、判断模块、查找模块、计算模块和推送模块;
[0011] 获取模块,用于获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;
[0012] 当判断模块确定获取模块获取的推送类型为延迟推送时,查找模块用于根据获取模块获取的目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的
推送消息及其写入时间;目标文件中包括至少两个推送消息,且至少两个待推送消息的消
息识别码连续;
[0013] 计算模块,用于计算查找模块查找到的目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;
[0014] 当判断模块确定计算模块计算的时间差大于等于预设时间间隔时,推送模块用于根据获取模块获取的目标消息识别码按照预设规则获取推送指令对应的推送消息并推送。
[0015] 第三方面,提供一种消息推送装置,包括存储器、处理器、总线和通信接口;存储器用于存储计算机执行指令,处理器与存储器通过总线连接;当消息推送装置运行时,处理器
执行存储器存储的计算机执行指令,以使装置执行如第一方面提供的消息推送方法。
[0016] 第四方面,提供一种计算机存储介质,包括计算机执行指令,当所述计算机执行指令在计算机上运行时,使得所述计算机执行如第一方面提供的消息推送方法。
[0017] 本发明实施例提供的消息推送方法和装置,该方法包括:获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;当确定推送类型为延迟推送时,根
据目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息
及其写入时间;目标文件中包括至少两个推送消息,且至少两个待推送消息的消息识别码
连续;计算目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;当确定时间
差大于等于预设时间间隔时,根据目标消息识别码按照预设规则获取推送指令对应的推送
消息并推送。本发明实施例提供的技术方案,在接收到客户端的推送指令后,若确定推送指
令中的推送类型为延迟推送时,可以根据推送指令中包含的目标消息识别码从存储有延迟
推送消息的目标文件中快速的获取和目标识别码对应的推送消息及其写入时间,若确定当
前时刻和该吸入时间的差值大于预设延迟间隔时,将其推送,从而完成延迟推送消息的推
送流程。因为本发明实施例提供的技术方案是基于文件存储方式来存储推送延迟推送消息
的,每一个延迟消息都具备独有的识别码,而且均对应存储了各个延迟推送消息的写入时
间,所以需要推送消息时可以很快的确定需要推送的延迟推送消息的位置以及是否可以发
送;而现有的数据库方案则会见某条推送消息的所有信息全部集合在一起做成字符串,搜
索起来要相对复杂,比较耗费计算资源,所以其相比于现有的基于内存存储或数据库存储
的延迟推送消息推送方法,节省了大量的资源而且能够高效快捷的推送延迟推送消息。

附图说明

[0018] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0019] 图1为本发明实施例提供的一种消息推送方法的流程示意图;
[0020] 图2为本发明实施例提供的另一种消息推送方法的流程示意图;
[0021] 图3为本发明实施例提供的一种消息推送装置的结构示意图;
[0022] 图4为本发明实施例提供的另一种消息推送装置的结构示意图。

具体实施方式

[0023] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0024] 需要说明的是,本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应
被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例
如”等词旨在以具体方式呈现相关概念。
[0025] 还需要说明的是,本发明实施例中,“的(英文:of)”,“相应的(英文:corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的
是,在不强调其区别时,其所要表达的含义是一致的。
[0026] 为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可
以理解“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
[0027] 现有对于延迟推送消息的推送都是从内存或者数据库中搜索到后推送,当消息量很大时,从内存中推送延迟推送消息会占用很大的内存,浪费计算资源,而数据库中搜索数
据则不够快捷。
[0028] 针对上述问题,本发明实施例提供一种将延迟推送消息存储在文件中的格式,以一个消息组中存储1000个推送消息、一个子文件存储至少两个消息组为例,2018年10月25
日需要推送的延迟推送消息存储在文件中的格式如下所示:
[0029] 181025//文件名称;
[0030] 1810250000000001.idIndexTime//第一子文件的数据文件与写入时间的索引文件,其中1810250000000001为第一子文件的文件识别码;
[0031] 1810250000000001=写入时间//第一子文件的第一消息组的写入时间,其中1810250000000001为第一消息组的组识别码;
[0032] 1810250000001001=写入时间//第一子文件的第二消息组的写入时间,其中1810250000001001为第一消息组的组识别码;
[0033] 1810250000000001.datapushindex第一消息组的推送消息索引文件
[0034] 1810250000000001.datapushdat第一消息组的推送消息数据文件
[0035] 1810250000001001.datapushindex第二消息组的推送消息索引文件
[0036] 1810250000001001.datapushdat第二消息组的推送消息数据文件
[0037] 其中,每一个消息组的推送消息索引文件中均包括有一千条消息的消息识别码、起始字节和大小,每一个消息组的推送消息数据文件中则均存储有1000条推送消息。每一
个推送消息的消息识别码都是根据写入时间和实际需要推送的顺序来存储的,例如上例中
第一消息组中存储的需要首先发推送的推送消息的消息识别码为1810250000000001,其后
依次1810250000000002、1810250000000003……1810250000001000,第二个消息组中第一
个需要发送推送消息的消息识别码则为1810250000001001;实际中文件的名称(文件识别
码)一般是以其中存储的内容来决定,例如其中存储了2018年10月25日需要推送的消息则
命名为181025;而其中的子文件的文件识别码的命名是按照同样的规则取自身存储的2000
个消息中任一个消息的消息识别码作为名称,例如上例所示,取自身存储的所有推送消息
的识别码中的最小值;消息组的组识别码命名规则和子文件的文件识别码命名规则同理。
所以这样一来将某一时间段需要推送的消息可以有序的存储在文件中;因为实际中服务端
需要推送的推送很多,所以文件中每一个消息组中的1000条推送消息的写入时间都是差别
很小近似相同。
[0038] 实际中的消息推送过程在客户端和服务端之间进行,当客户端本身装载的某种APP有活动即将进行时,其会通过客户端向服务端发送用于指示某条推送消息的指令,服务
端在接收到指令后则会向客户端推送对应的推送消息,但是使用客户端的用户可能会在该
APP中获客户端中设置不接受推送消息的时段例如晚上0点至第二天六点之间,那么就要使
得服务端发送推送消息时避开这段时间,也就存在需要存储一端时间后再发送的延迟推送
消息。
[0039] 基于上述文件存储方式和延迟推送消息的相关内容,参照图1所示,本发明实施例提供一种消息推送方法,包括:
[0040] 101、获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型。
[0041] 102、当确定推送类型为延迟推送时,根据目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息及其写入时间。
[0042] 其中,目标文件中包括至少两个推送消息,且至少两个待推送消息的消息识别码连续。
[0043] 可选的,参照图2所示,102步骤具体包括:
[0044] 1021、根据目标消息识别码从当前时刻对应的目标文件中的所有子文件中查找目标消息识别码所属的推送消息所属的目标子文件。
[0045] 因为1021步骤具体是根据目标消息识别码和每一个子文件的文件识别码来选取目标子文件的,而参照前述介绍的文件存储格式可知,子文件的文件识别码为其存储的推
送消息中某个推送消息的消息识别码,而为了保证在选取目标子文件时更快捷,一般使用
所有消息识别码中的最大值或最小值,所以可选的,1021步骤具体包括:
[0046] S1、当目标文件中任一子文件的文件识别码为任一子文件中包括的所有推送消息的消息识别码中最小值时,将目标文件中所有子文件的文件识别码中小于等于目标消息识
别码的文件识别码中,最大的文件识别码所属的子文件确定为目标子文件。
[0047] S2、当目标文件中任一子文件的文件识别码为任一子文件中包括的所有推送消息的消息识别码中最大值时,将目标文件中所有子文件的文件识别码中大于等于目标消息识
别码的文件识别码中,最小的文件识别码所属的子文件确定为目标子文件。
[0048] 1022、根据目标消息识别码从目标子文件中的所有消息组中获取目标消息识别码所属的推送消息所属的目标消息组。
[0049] 因为1022步骤具体是根据目标消息识别码和每一个消息组的组识别码来选取目标子文件的,而参照前述介绍的文件存储格式可知,消息组的组识别码为其存储的推送消
息中某个推送消息的消息识别码,而为了保证在选取目标子文件时更快捷,一般使用所有
消息识别码中的最大值或最小值,所以可选的,1022步骤具体包括:
[0050] Q1、当目标子文件中任一消息组的组识别码为任一消息组中包括的所有推送消息的消息识别码中最小值时,将目标文件中所有消息组的组识别码中小于等于目标消息识别
码的组识别码中,最大的组识别码所属的消息组确定为目标消息组。
[0051] Q2、当目标子文件中任一消息组的组识别码为任一消息组中包括的所有推送消息的消息识别码中最大值时,将目标文件中所有消息组的组识别码中大于等于目标消息识别
码的组识别码中,最小的组识别码所属的消息组确定为目标消息组。
[0052] 1023、将目标消息组的写入时间确定为目标消息识别码的推送消息的写入时间;目标消息组的写入时间存储在目标子文件中。
[0053] 其中,目标文件中任一个子文件中包括第一预设个数个推送消息;子文件中任一消息组包括写入时间相同且识别码连续不中断的第二预设个数个推送消息。
[0054] 103、计算目标消息识别码所属的推送消息的写入时间和当前时刻的时间差。
[0055] 104、判断时间差是否大于等于预设时间间隔。
[0056] 当确定时间差大于等于预设时间间隔时,执行105;当确定时间差小于预设时间间隔时,执行101。
[0057] 具体的,这里的预设时间间隔可以是客户端发送的,例如用户不想再某个时间段接收推送消息造成的预设时间间隔,也可以是服务端自身设置的,例如在某银行APP会在某
活动中会发给服务端推送指令后使服务端每隔一段时间向客户端推送相同的推送消息,以
增加客户端对应的用户参加活动的几率。
[0058] 105、根据目标消息识别码按照预设规则获取推送指令对应的推送消息并推送。
[0059] 具体的,实际中客户端给服务端发送的指令要求得到的推送消息可以为一条也可以为多条,例如某银行APP在双十一时举办活动,包括储蓄卡活动,信用卡活动、存钱活动,
老用户活动和新用户活动等,所以针对某些客户可能需要使其接收到多条推送消息,所以
此时获取的推送消息指令中的目标消息识别码所属的推送消息为推送指令对应的推送消
息中首个推送的推送消息,该推送指令中还包括推送个数;另外,因为实际中目标文件存储
的所有推送消息可能是按预先确定的推送顺序来确定消息识别码的大小的,所以可选的,
参照图2所示,105步骤包括:
[0060] 1051、当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,从目标文件中的目标消息识别码所属的推送消息开始,按照
识别码从小到大的顺序依次选取推送个数个推送消息作为第一目标推送消息,并将第一目
标推送消息确定为推送指令对应的推送消息。
[0061] 1051步骤中对应的消息识别码设置规则适合不确定推送消息数量时,推送消息的消息识别码的设置。
[0062] 1052、将推送指令对应的推送消息的识别码中的最大值发送给客户端。
[0063] 因为在将需要的推送消息发送出去后,需要使客户端了解当前推送消息发送到哪一个了,以便下次发送时确定目标消息识别码;当然1052步骤中也可以将所有比推送指令
对应的推送消息的识别码中的最大值大的消息识别码中的最小值发送给客户端,以使客户
端将该最小值确定为下次请求推送信息时发送的目标消息识别码;1054步骤同理。
[0064] 1053、当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,从目标文件中的目标消息识别码所属的推送消息开始,按照
识别码从大到小的顺序依次选取推送个数个推送消息作为第二目标推送消息,并将预设第
二目标推送消息确定为推送指令对应的推送消息。
[0065] 1053步骤中对应的消息识别码设置规则适合确定推送消息数量的情况时,推送消息的消息识别码的设置。
[0066] 1054、将推送指令对应的推送消息的识别码中的最小值发送给客户端。
[0067] 1055、推送指令对应的推送消息。
[0068] 示例性的,因为目标文件中包括目标子文件,目标子文件中包括目标消息组,而实际中在查找推送指令的推送消息时,是从目标消息组中查找的,而从目标消息中查找时会
存在消息识别码比目标消息识别码大的推送消息数量小于推送个数或消息识别码比目标
消息识别码小的推送消息数量小于推送个数的情况,这种情况下,需要在将目标消息组中
可发送的推送消息推送完后,从组识别码比目标消息组大的消息组中组识别码最小的消息
组(如果符合要求消息组在另一子文件中,还需要进行一步子文件的查找,查找所使用的消
息识别码针对不同的消息识别码设置情况,为从目标消息组中获取的推送消息的所有消息
识别码的最大值或最小值值)中补够推送消息,其选取过程和目标消息组中的选取过程类
似。
[0069] 106、当确定推送类型为实时推送时,根据目标消息识别码从内存中获取目标识别码所属的推送消息,并推送目标识别码所属的推送消息。
[0070] 具体的,实际中内存的空间有限,如果以此出现大批量实时推送消息时,内存不够用,所以本发明实施例中所有的推送消息(延迟推送消息和实时推送消息)均会在文件中存
储,当从内存中没有搜索到需要发送的推送消息时,则需要从文件中搜索查找,查找过程和
前述实施例同理;为了保证实时推送消息的存储不影响后续实时推送消息和延迟推送消息
的推送,在实时推送消息推送后,会将其消息识别码(也可以是该实时推送消息之后需要发
送的推送消息的消息识别码)发送给需要需要接客户端或者存储发送记录在服务端,以使
得如果该实时推送消息之后需要发送的推送消息对应的客户端可以接收到需要的推送消
息。
[0071] 本发明实施例提供的消息推送方法,该方法包括:获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;当确定推送类型为延迟推送时,根据目标
消息识别码从当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息及其写
入时间;目标文件中包括至少两个推送消息,且至少两个待推送消息的消息识别码连续;计
算目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;当确定时间差大于等
于预设时间间隔时,根据目标消息识别码按照预设规则获取推送指令对应的推送消息并推
送。本发明实施例提供的技术方案,在接收到客户端的推送指令后,若确定推送指令中的推
送类型为延迟推送时,可以根据推送指令中包含的目标消息识别码从存储有延迟推送消息
的目标文件中快速的获取和目标识别码对应的推送消息及其写入时间,若确定当前时刻和
该吸入时间的差值大于预设延迟间隔时,将其推送,从而完成延迟推送消息的推送流程。因
为本发明实施例提供的技术方案是基于文件存储方式来存储推送延迟推送消息的,每一个
延迟消息都具备独有的识别码,而且均对应存储了各个延迟推送消息的写入时间,所以需
要推送消息时可以很快的确定需要推送的延迟推送消息的位置以及是否可以发送;而现有
的数据库方案则会见某条推送消息的所有信息全部集合在一起做成字符串,搜索起来要相
对复杂,比较耗费计算资源,所以其相比于现有的基于内存存储或数据库存储的延迟推送
消息推送方法,节省了大量的资源而且能够高效快捷的推送延迟推送消息。
[0072] 本发明实施例还提供一种服务端,其中包括一种消息推送装置01,参照图3所示,该消息推送装置01包括:获取模块31、判断模块32、查找模块33、计算模块34和推送模块35;
[0073] 获取模块31,用于获取客户端02发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;
[0074] 当判断模块32确定获取模块31获取的推送类型为延迟推送时,查找模块33用于根据获取模块31获取的目标消息识别码从当前时刻对应的目标文件中查找与目标消息识别
码所属的推送消息及其写入时间;目标文件中包括至少两个推送消息,且至少两个待推送
消息的消息识别码连续;
[0075] 计算模块34,用于计算查找模块33查找到的目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;
[0076] 当判断模块32确定计算模块34计算的时间差大于等于预设时间间隔时,查找模块33用于根据获取模块31获取的目标消息识别码按照预设规则获取推送指令对应的推送消
息并交由所述推送模块35推送。
[0077] 可选的,查找模块33包括子文件查找单元331、消息组查找单元332和写入时间确定模块333;
[0078] 子文件查找单元331,用于根据获取模块31获取的目标消息识别码从当前时刻对应的目标文件中的所有子文件中查找目标消息识别码所属的推送消息所属的目标子文件;
[0079] 消息组查找单元332,用于根据获取模块31获取的目标消息识别码从子文件查找单元331查找到的目标子文件中的所有消息组中获取目标消息识别码所属的推送消息所属
的目标消息组;
[0080] 写入时间确定模块333,用于将消息组查找单元332查找到的目标消息组的写入时间确定为目标消息识别码的推送消息的写入时间;目标消息组的写入时间存储在目标子文
件中;
[0081] 目标文件中任一个子文件中包括第一预设个数个推送消息;子文件中任一消息组包括写入时间相同且识别码连续不中断的第二预设个数个推送消息。
[0082] 可选的,子文件查找模块33具体用于:
[0083] 当目标文件中任一子文件的文件识别码为任一子文件中包括的所有推送消息的消息识别码中最小值时,将目标文件中所有子文件的文件识别码中小于等于获取模块31获
取的目标消息识别码的文件识别码中,最大的文件识别码所属的子文件确定为目标子文
件;
[0084] 当目标文件中任一子文件的文件识别码为任一子文件中包括的所有推送消息的消息识别码中最大值时,将目标文件中所有子文件的文件识别码中大于等于获取模块31获
取的目标消息识别码的文件识别码中,最小的文件识别码所属的子文件确定为目标子文
件。
[0085] 可选的,消息组查找模块33具体用于:
[0086] 当目标子文件中任一消息组的组识别码为任一消息组中包括的所有推送消息的消息识别码中最小值时,将目标文件中所有消息组的组识别码中小于等于目标消息识别码
的组识别码中,最大的组识别码所属的消息组确定为目标消息组;
[0087] 当目标子文件中任一消息组的组识别码为任一消息组中包括的所有推送消息的消息识别码中最大值时,将目标文件中所有消息组的组识别码中大于等于目标消息识别码
的组识别码中,最小的组识别码所属的消息组确定为目标消息组。
[0088] 可选的,目标消息识别码所属的推送消息为推送指令对应的推送消息中首个推送的推送消息;推送指令还包括推送个数;查找模块33具体用于:
[0089] 当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,从目标文件中的获取模块31获取的目标消息识别码所属的推送消
息开始,按照识别码从小到大的顺序依次选取推送个数个推送消息作为第一目标推送消
息,并将第一目标推送消息确定为推送指令对应的推送消息;
[0090] 当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,从目标文件中的获取模块31获取的目标消息识别码所属的推送消
息开始,按照识别码从大到小的顺序依次选取推送个数个推送消息作为第二目标推送消
息,并将预设第二目标推送消息确定为推送指令对应的推送消息。
[0091] 可选的,当判断模块32确定推送类型为实时推送时,查找模块33还用于根据获取模块31获取的目标消息识别码从内存中获取目标识别码所属的推送消息,并交由推送模块
35推送目标识别码所属的推送消息。
[0092] 可选的,当判断模块32确定计算模块34计算的时间差小于延迟间隔时,获取模块31还用于重新获取推送消息指令。
[0093] 可选的,当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从小到大的设置连续的消息识别码时,推送模块35在推送推送指令对应的推送消息之后还包括:
将推送指令对应的推送消息的识别码中的最大值发送给客户端02;
[0094] 当目标文件中的至少两个推送消息按照从先到后的预设推送顺序从大到小的设置连续的消息识别码时,推送模块35在推送推送指令对应的推送消息之后还包括:将推送
指令对应的推送消息的识别码中的最小值发送给客户端02。
[0095] 本发明实施例提供的消息推送装置,因为该装置包括:获取模块,用于获取客户端发送的推送指令;推送指令至少携带有目标消息识别码和推送类型;当判断模块确定获取
模块获取的推送类型为延迟推送时,查找模块用于根据获取模块获取的目标消息识别码从
当前时刻对应的目标文件中查找与目标消息识别码所属的推送消息及其写入时间;目标文
件中包括至少两个推送消息,且至少两个待推送消息的消息识别码连续;计算模块,用于计
算查找模块查找到的目标消息识别码所属的推送消息的写入时间和当前时刻的时间差;当
判断模块确定计算模块计算的时间差大于等于预设时间间隔时,推送模块用于根据获取模
块获取的目标消息识别码按照预设规则获取推送指令对应的推送消息并推送。所以本发明
实施例提供的技术方案,可以在接收到客户端的推送指令后,若确定推送指令中的推送类
型为延迟推送时,可以根据推送指令中包含的目标消息识别码从存储有延迟推送消息的目
标文件中快速的获取和目标识别码对应的推送消息及其写入时间,若确定当前时刻和该吸
入时间的差值大于预设延迟间隔时,将其推送,从而完成延迟推送消息的推送流程。因为本
发明实施例提供的技术方案是基于文件存储方式来存储推送延迟推送消息的,每一个延迟
消息都具备独有的识别码,而且均对应存储了各个延迟推送消息的写入时间,所以需要推
送消息时可以很快的确定需要推送的延迟推送消息的位置以及是否可以发送;而现有的数
据库方案则会见某条推送消息的所有信息全部集合在一起做成字符串,搜索起来要相对复
杂,比较耗费计算资源,所以其相比于现有的基于内存存储或数据库存储的延迟推送消息
推送方法,节省了大量的资源而且能够高效快捷的推送延迟推送消息。
[0096] 参照图4所示,本发明实施例还提供另一种消息推送装置,包括存储器41、处理器42、总线43和通信接口44;存储器41用于存储计算机执行指令,处理器42与存储器41通过总
线43连接;当消息推送装置运行时,处理器42执行存储器41存储的计算机执行指令,以使消
息推送装置执行如上述实施例提供的消息推送方法。
[0097] 在具体的实现中,作为一种实施例,处理器42(42-1和42-2)可以包括一个或多个CPU,例如图4中所示的CPU0和CPU1。且作为一种实施例,消息推送装置可以包括多个处理器
42,例如图4中所示的处理器42-1和处理器42-2。这些处理器42中的每一个CPU可以是一个
单核处理器(Single-CPU),也可以是一个多核处理器(Multi-CPU)。这里的处理器42可以指
一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0098] 存储器41可以是只读存储器41(Read-OnlyMemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信
息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically 
Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-
Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用
光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指
令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器41可以是独立存在,通过通信总线43与处理器42相连接。存储器41也可以和处理器
42集成在一起。
[0099] 在具体的实现中,存储器41,用于存储本申请中的数据和执行本申请的软件程序对应的计算机执行指令。处理器42可以通过运行或执行存储在存储器41内的软件程序,以
及调用存储在存储器41内的数据,消息推送装置的各种功能。
[0100] 通信接口44,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如控制系统、无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local Area 
Networks,WLAN)等。通信接口44可以包括接收单元实现接收功能,以及发送单元实现发送
功能。
[0101] 总线43,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系
结构(Extended Industry Standard Architecture,EISA)总线等。该总线43可以分为地址
总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根
总线或一种类型的总线。
[0102] 本发明实施例还提供一种计算机存储介质,计算机存储介质包括计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行如上述实施例提供的消息推送
方法。
[0103] 本发明实施例还提供一种计算机程序,该计算机程序可直接加载到存储器中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述实施例提供的消息推
送方法。
[0104] 本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能
存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另
一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何
可用介质。
[0105] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上
述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成
以上描述的全部或者部分功能。
[0106] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的
划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件
可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或
讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦
合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可
以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以
位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或
者全部单元来实现本实施例方案的目的。
[0107] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以
软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介
质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部
分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个
存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器
(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:
U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0108] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应
涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。