消息推送方法、装置、计算机设备和存储介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种消息推送方法、装置、计算机设备和存储介质。
背景技术
随着信息时代的到来,消息推送已经成为一种非常重要的信息传递方式。
传统方法中,是把要推送的消息的批量信息加入到线性队列中,并按照线性方式,按序地对信息进行消息推送处理,等上一个处理完毕后才能进行下一个处理,这样一来,在进行批量消息推送处理时,就容易造成大量的信息都需要在线性队列中长时间的排队等待,造成消息推送效率比较低。
发明内容
基于此,有必要针对目前消息推送效率比较低的技术问题,提供一种消息推送方法、装置、计算机设备和存储介质。
一种消息推送方法,所述方法包括:
分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;
分别针对所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地从所对应的所述初始序号起按序地从所述环形缓存区中读取序号,并获取所读取的各序号对应的元信息;
通过所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;
根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
在其中一个实施例中,所述通过所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理包括:
通过所述消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息;
通过所述推送对象确定线程,确定与相应获取的元信息相应的推送对象;
通过所述规则过滤线程,针对相应获取的元信息所对应的推送模板信息进行推送规则判断;
其中,所述消息封装线程、所述推送对象确定线程和所述规则过滤线程为并发执行。
在其中一个实施例中,所述根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送包括:
获取从开始按序读取序号起至达到预设时长时,得到的封装的消息;
从所述得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在其中一个实施例中,所述从所述得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送包括:
确定从开始按序读取序号起至达到预设时长时,所述消息封装线程、所述推送对象确定线程和所述规则过滤线程所分别读取到的最大序号;
从确定的各个所述最大序号中取最小值,得到目标最大序号;
从所述消息封装线程、推送对象确定线程和规则过滤线程分别所对应的初始序号中选取最小值,得到最小初始序号;
从所述得到的封装的消息中,选取由所述最小初始序号至所述目标最大序号中的各个序号所对应的消息;
从选取的所述消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在其中一个实施例中,所述通过所述消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息包括:
通过所述消息封装线程,根据相应获取的元信息中的推送消息获取参数,获取对应的消息内容;
根据相应获取的元信息中的推送模板标识,获取对应的推送模板信息;
将所述消息内容代入所述推送模板信息中进行封装处理,得到封装的消息。
在其中一个实施例中,所述通过所述推送对象确定线程,确定与相应获取的元信息相应的推送对象包括:
通过所述推送对象确定线程,根据相应获取的元信息中的待推送用户标识,从数据库中查找与所述待推送用户标识对应的设备标识;
获取与所述设备标识对应的操作系统种类标识;
根据所述操作系统种类标识确定出相应的推送渠道;所述推送渠道和所述设备标识所对应的设备为确定出的推送对象。
在其中一个实施例中,所述根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送还包括:
通过路由逻辑,将得到的所述消息路由至确定出的所述推送渠道所对应的环形缓存区并缓存;
根据预设周期从所述推送渠道所对应的环形缓存区中提取缓存的消息;
将提取的消息推送至所述设备标识所对应的设备。
一种消息推送装置,所述装置包括:
序号确定模块,用于分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;
序号读取模块,用于分别针对所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地从所对应的所述初始序号起按序地从所述环形缓存区中读取序号,并获取所读取的各序号对应的元信息;
元信息处理模块,用于通过所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;
消息推送模块,用于根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如下步骤:
分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;
分别针对所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地从所对应的所述初始序号起按序地从所述环形缓存区中读取序号,并获取所读取的各序号对应的元信息;
通过所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;
根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如下步骤:
分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;
分别针对所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地从所对应的所述初始序号起按序地从所述环形缓存区中读取序号,并获取所读取的各序号对应的元信息;
通过所述消息封装线程、所述推送对象确定线程和所述规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;
根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
上述消息推送方法、装置、计算机设备和存储介质,将批量元信息存储在环形缓存区中,通过消息封装线程、推送对象确定线程和规则过滤线程这三个线程,并发地从环形缓存区中所对应的初始序号按序地读取序号及获取相应的元信息,并对相应获取的元信息进行对应处理,将消息封装处理、推送对象确定以及规则过滤这三个处理进行并发处理,可以并发地进行消息生成处理,从而提高了消息生成效率,进而提高了消息推送效率。
附图说明
图1为一个实施例中消息推送方法的应用环境图;
图2为一个实施例中计算机设备的内部结构示意图;
图3为一个实施例中消息推送方法的流程示意图;
图4为一个实施例中元信息处理步骤的流程示意图;
图5为一个实施例中封装的消息选取步骤的流程示意图;
图6为一个实施例中消息推送装置的框图;
图7为一个实施例中消息推送模块的框图;
图8为一个实施例中元信息处理模块的框图;
图9为另一个实施例中元信息处理模块的框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中消息推送方法的应用环境图。参照图1,该应用环境包括通过网络连接的服务器110和终端120。其中,服务器110分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号。服务器110分别针对消息封装线程、推送对象确定线程和规则过滤线程,并发地从所对应的初始序号起按序地从环形缓存区中读取序号,并获取所读取的序号对应的元信息。服务器110通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理,并根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息。服务器110将得到的消息推送至终端120。
图2为一个实施例中计算机设备的内部结构示意图。该计算机设备可以是图1中的服务器110,服务器110可以用独立的服务器或是多个物理服务器组成的服务器集群来实现。参照图2,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,计算机设备的非易失性存储介质存储有操作系统,还可以存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现一种缓存处理方法。该处理器用于提供计算和控制能力,支撑整个计算机设备的运行。计算机设备中的内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种缓存处理方法。网络接口用于连接网络进行通信。
本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图3所示,在一个实施例中,提供了一种消息推送方法。本实施例主要以该方法应用于上述图2中的计算机设备来举例说明。参照图3,该缓存处理方法具体包括如下步骤:
S302,分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号。
其中,消息封装进程,是用于进行消息封装的程序。推送对象,是消息要被推送至的对象。推送对象确定进程,是用于确定消息所要推送至的对象的程序。规则过滤进程,是用于判断消息推送是否符合推送规则的程序。
环形缓存区,是一种固定尺寸、首尾相接的数据结构,用于缓存数据流。该环形缓存区中包括序号,该序号用于标识环形缓存区中的缓存区域。
初始序号,是在环形缓存区中进行按序读取前所对应的当前序号。其中,消息封装线程、推送对象确定线程和规则过滤线程分别具有自身在环形缓存区中的读取序号。比如,消息封装进程在环形缓存区中进行按序读取前所读取到的序号为3,则其所对应的初始序号为3,推送对象确定线程和规则过滤线程在环形缓存区中进行按序读取前所读取到的序号分别为3和4,则它们所对应的初始序号分别为3和4。可以理解,消息封装线程、推送对象确定线程和规则过滤线程所对应的初始序号可以为相同默认值,比如1。
元信息,是需要推送的消息的基础描述信息,元信息包括待推送用户标识、推送消息获取参数或推送模板标识等信息。其中,待推送用户标识,用于唯一标识要推送的用户(即接收所推送的消息的用户)。推送消息获取参数,是用于获取要推送的消息内容的参数,通过推送消息获取参数,可以确定要获取哪些参数相应的参数值,并根据该参数及相应的参数值组成消息内容。推送模板,是预设的消息模板。
可以理解,环形缓存区的各序号所对应的缓存区域中存储有元信息。
S304,分别针对消息封装线程、推送对象确定线程和规则过滤线程,并发地从所对应的初始序号起按序地从环形缓存区中读取序号,并获取所读取的各序号对应的元信息。
并发,是指将消息封装线程、推送对象确定线程以及规则过滤线程同时执行。
具体地,计算机设备在通过消息封装线程,从该消息封装线程所对应的初始序号按序地从环形缓存区中读取序号,并获取所读取的各序号所对应的元信息的同时,也同时分别针对推送对象确定线程和规则过滤线程,从所对应的初始序号按序地从环形缓存区中读取序号,并获取所读取的各序号所对应的元信息。可以理解,这个三个线程所进行的处理是独立的。序号所对应的元信息,即为该序号所对应的缓存区域中存储的元信息。
比如,针对消息封装线程从所对应的初始序号3开始,按序地从环形缓存区中读取序号的同时,也针对推送对象确定线程从所对应的初始序号3开始,按序地从环形缓存区中读取序号,以及同时针对规则过滤线程从所对应的初始序号4开始,按序地从环形缓存区中读取序号。以消息封装线程为例,假设从所对应的初始序号3开始、按序地从环形缓存区中读取序号4、5……N,则也会获取序号3所对应的元信息,获取序号4所对应的元信息,获取序号5所对应的元信息以及获取序号N所对应的元信息。
S306,通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理。
其中,推送对象,是消息要被推送至的对象。
具体地,计算机设备可以通过消息封装线程,对通过该消息封装线程获取的元信息进行消息封装处理,得到封装的消息。同时计算机设备也会并发地通过推送对象确定线程,对通过该推送对象确定线程获取的元信息进行推送对象确定处理,且同时也会通过规则过滤线程,对通过该规则过滤线程获取的元信息进行推送规则判断。可以理解,消息封装处理、推送对象确定处理以及推送规则判断这三个处理是独立进行的。
S308,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
具体地,计算机设备可以分别根据三个线程进行并发处理的结果,得到确定出推送对象的、且符合推送规则的封装的消息。其中,封装的消息所确定出的推送对象为该封装的消息所对应的元信息的推送对象。该封装的消息所对应的元信息,是描述该封装的消息的基础信息。所对应的元信息在被进行推送规则判断后符合条件,则说明该封装的消息符合推送规则。
比如,消息封装线程获取的是序号1和2所对应的元信息,消息封装线程则对序号1、2和3中的元信息进行消息封装处理得到封装的消息M1、M2和M3,推送对象确定线程获取的是序号1、2和3所对应的元信息,推送对象确定线程则对序号1、2和3中的元信息进行推送对象确定处理,确定出相应的推送对象T1、T2和T3,规则过滤线程获取的是序号1和2所对应元信息,规则过滤线程则对序号1和2中的元信息进行推送规则判断,得到序号2中元信息符合条件、序号1中元信息不符合条件。则从中筛选确定出推送对象的、且符合推送规则的封装的消息为消息M2,因为消息M2所确定的推送对象为T1,且消息M2所对应的元信息——序号2中的元信息在被进行推送规则判断后符合条件。
在一个实施例中,推送对象包括用于进行消息推送的渠道以及用于接收被推送的消息的设备。计算机设备可以按照所确定的相应的推送渠道,将得到的消息推送至所确定出的设备。
可以理解,在将消息推送后,环形缓存区中就会对应删除该消息所对应的元信息,并且当消息封装线程、推送对象确定线程和规则过滤线程都将环形缓存区中的元信息读取完毕,并进行相应处理完毕后(即消息封装线程对环形缓存区中的所有元信息进行封装处理、推送对象确定线程对环形缓存区中的所有元信息进行推送对象确定处理,以及规则过滤线程对环形缓存区中的所有元信息进行推送规则判断后),可以再存储新一批的元信息至该环形缓存区中。
上述消息推送方法、装置、计算机设备和存储介质,将批量元信息存储在环形缓存区中,通过消息封装线程、推送对象确定线程和规则过滤线程这三个线程,并发地从环形缓存区中所对应的初始序号按序地读取序号及获取相应的元信息,并对相应获取的元信息进行对应处理,将消息封装处理、推送对象确定以及规则过滤这三个处理进行并发处理,可以并发地进行消息生成处理,从而提高了消息生成效率,进而提高了消息推送效率。
在一个实施例中,如图4所示,步骤S306包括(简称元信息处理步骤),具体包括以下步骤:
S402,通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息。
其中,元信息包括推送消息获取参数。推送消息获取参数,是用于获取要推送的消息内容的参数。
具体地,计算机设备可以通过消息封装线程,从相应获取的元信息中提取所包括的推送消息获取参数,并通过提取的推送消息获取参数,确定从数据库中获取与提取的推送消息获取参数相应的参数值,根据推送消息获取参数及相应的参数值生成消息内容。
进一步地,计算机设备可以对生成的消息内容进行封装处理,得到封装的消息。
S404,通过推送对象确定线程,确定与相应获取的元信息相应的推送对象。
其中,步骤S404所述的相应获取的元信息,是通过推送对象确定线程获取的元信息。与元信息相应的推送对象,是要将该元信息所描述的信息推送至的对象。
在一个实施例中,元信息包括待推送用户标识。本实施例中,步骤S404包括:通过所述推送对象确定线程,根据相应获取的元信息中的待推送用户标识,从数据库中查找与所述待推送用户标识对应的设备标识;获取与所述设备标识对应的操作系统种类标识;根据所述操作系统种类标识确定出相应的推送渠道;所述推送渠道和所述设备标识为确定出的推送对象。本实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送还包括:按照相应的推送渠道,将得到的消息推送至设备标识所对应的设备。
其中,待推送用户标识,用于唯一标识要推送的用户(即接收所推送的消息的用户)。这里所说的相应获取的元信息,是通过推送对象确定线程获取的元信息。操作系统种类,用于表征设备所使用的是操作系统是哪一类别。操作系统种类包括安卓操作系统((Android,一种基于Linux的自由及开放源代码的操作系统)、iOS操作系统(由苹果公司开发的移动操作系统)、Windows操作系统(美国微软公司研发的一套操作系统)或Linux操作系统(一套免费使用和自由传播的类Unix操作系统)等中的至少一种类别。推送渠道包括安卓推送渠道、iOS推送渠道、Windows推送渠道或Linux推送渠道等中的至少一种。
具体地,数据库中预先存储了待推送用户标识和设备标识间的对应关系,根据该对应关系,计算机设备可以通过推送对象确定线程,从数据库中查找与相应获取的元信息中的待推送用户标识对应的设备标识。数据库中还预先存储了设备标识和操作系统种类标识间的对应关系,根据该对应关系,获取与查找到的设备标识所对应的操作系统种类标识。进一步地,计算机设备可以根据操作系统种类标识确定出相应的推送渠道。比如,确定出的操作系统种类标识用于唯一标识安卓操作系统,则确定出与该操作系统种类标识相应的推送渠道为安卓推送渠道。
S406,通过规则过滤线程,针对相应获取的元信息所对应的推送模板信息进行推送规则判断;其中,消息封装线程、推送对象确定线程和规则过滤线程为并发执行。
其中,步骤S406所述的相应获取的元信息,是通过规则过滤线程获取的元信息。本实施例中,元信息中包括推送模板标识。
具体地,计算机设备可以通过规则过滤线程,从相应获取的元信息中提取推送模板标识,根据提取的推送模板标识从数据库中获取对应的推送模板信息。进一步地,计算机设备预先设置了推送判断规则,计算机设备可以根据预设的推送判断规则对获取的推送模板信息进行推送规则判断,以判断推送模板信息是否符合推送规则。其中,推送模板,是预设的消息模板,包括消息的内容格式模板。
上述实施例中,通过消息封装线程、推送对象确定线程和规则过滤线程这三个线程,并发地对相应获取的元信息分别进行消息封装处理,推送对象确定处理以及推送规则判断处理,使得生成符合条件的消息的效率更高,进而提高了消息推送效率。
在一个实施例中,步骤S308包括:获取从开始按序读取序号起至达到预设时长时,得到的封装的消息;从得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
其中,所对应的元信息是与封装的消息对应的元信息,即描述该消息的基础信息的元信息。所对应的元信息被确定出的推送对象即为封装的消息所确定出的推送对象。与所对应的元信息对应的推送模板信息符合推送规则,则说明该封装的消息符合推送规则。
具体地,计算机设备可以从确定的从开始按序读取序号起至达到预设时长时,通过消息封装线程进行封装处理得到的所有封装的消息,并判断所有封装的消息,是否满足所对应的元信息被确定出推送对象、且与所对应的元信息对应的推送模板信息符合推送规则这两个条件,以从所有封装的消息中,选取满足所对应的元信息被确定出推送对象、且与所对应的元信息对应的推送模板信息符合推送规则这两个条件的消息。
计算机设备也可以先从确定的从开始按序读取序号起至达到预设时长时,通过消息封装线程进行封装处理得到的所有封装的消息中,选取所对应的元信息已经进行了推送规则判断和推送对象确定处理的封装的消息。计算机设备可以针对选取的消息,判断所对应的元信息的推送对象是否已经确定出以及与所对应的元信息对应的推送模板信息是否符合推送规则,从选取的消息中,选取满足所对应的元信息被确定出推送对象、且与所对应的元信息对应的推送模板信息符合推送规则这两个条件的消息。
可以理解,对于在达到预设时长时,若所对应的元信息未被进行推送对象确定处理或者所对应的推送模板信息未被进行推送规则判断,则该封装的消息就不存在于确定的消息中,那么在消息封装线程、推送对象确定线程和规则过滤线程下一次开始按序读取序号起至预设时长时,如果该封装的消息所对应的序号存在于下一次所确定的最小初始序号至选取的目标最大序号中,则可以获取该封装的消息,并判断该封装的消息所对应的推送模板信息是否符合推送规则。
上述实施例中,通过预设时长分批次的确定要推送的消息,避免一次性处理量过大而影响处理效率。
如图5所示,在一个实施例中,从得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送(简称封装的消息选取步骤),具体包括以下步骤:
S502,确定从开始按序读取序号起至达到预设时长时,消息封装线程读取到的最大序号、推送对象确定线程读取到的最大序号,以及规则过滤线程读取到的最大序号。
其中,线程读取到的最大序号,是在从开始按序读取序号起至预设时长内,该线程所读取的序号中最大的序号。
具体地,计算机设备可以分别确定消息封装线程、推送对象确定线程以及规则过滤线程从环形缓存区中所对应的初始序号起按序地读取序号,在达到预设时长时,所读取到的最大序号。
S504,从确定的各个最大序号中取最小值,得到目标最大序号。
其中,目标最大序号,是指对多个最大序号取最小值所得到的序号。
具体地,计算机设备可以消息封装线程读取到的最大序号、推送对象确定线程读取到的最大序号,以及规则过滤线程读取到的最大序号中选取最小值,得到目标最大序号。
比如,消息封装线程所对应的初始序号为3,开始按序地读取序号,达到预设时长时,读取到的序号为3、4、5和6,则达到预设时长时,消息封装线程所读取到的最大序号为6。推送对象确定线程所对应的初始序号为4,开始按序地读取序号,达到预设时长时,读取到的序号为4、5、6、7和8,则达到预设时长时,推送对象确定线程所读取到的最大序号为8。规则过滤线程所对应的初始序号为3,开始按序地读取序号,达到预设时长时,读取到的序号为3、4和5,则达到预设时长时,规则过滤线程所读取到的最大序号为5。进一步地,计算机设备可以从消息封装线程所读取到的最大序号6、推送对象确定线程所读取到的最大序号8,以及规则过滤线程所读取到的最大序号5中选取最小值,得到目标最大序号为5。
S506,从消息封装线程、推送对象确定线程和规则过滤线程分别所对应的初始序号中选取最小值,得到最小初始序号。
同样结合步骤S502中的例子,从消息封装线程所对应的初始序号3、推送对象确定线程所对应的初始序号4,以及规则过滤线程所对应的初始序号3中选取最小值,得到最小初始序号为3。
S508,从得到的封装的消息中,选取由最小初始序号至目标最大序号中的各个序号所对应的封装的消息。
其中,序号所对应的封装的消息,是指对该序号中的元信息进行封装处理得到的封装的消息。
同样结合步骤S502和S504中的例子,最小初始序号3至目标最大序号5中的各个序号分别为序号3、4和5,则计算机设备可以分别获取序号3、4和5所对应的封装的信息M3、M4和M5,即获取对序号3、4和5中的元信息封装处理得到的信息M3、M4和M5。
S510,从选取的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
可以理解,通过推送对象确定线程对相应获取的元信息确定相应的推送对象时,可能存在确定出了推送对象和无法确定出推送对象的两种情况,所以,步骤S508中选取的封装的消息中可能存在所对应的元信息的推送对象未确定出的消息。同样地,通过规则过滤线程对相应获取的元信息所对应的推送模板信息进行推送规则判断,可能得到符合推送规则和不符合推送规则两种情况。所以,步骤S508中选取的封装的消息中可能存在不符合推送规则的消息。
所以,计算机设备可以从获取的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。比如,同样结合步骤S504~S508中的例子,计算机设备分别获取序号3、4和5所对应的封装的信息M3、M4和M5,规则过滤线程对序号3、4和5中的元信息所对应的推送模板信息都进行了推送规则判断,得到序号3中的元信息所对应的推送模板信息不符合推送规则,序号4和5中的元信息所对应的推送模板信息在进行推送规则判断后符合推送规则,推送对象确定线程对序号3、4和5中的元信息分别确定出了推送对象,则最终会选取信息M4和M5。
可以理解,对于在达到预设时长时,所对应的元信息未被进行推送对象确定处理或者所对应的推送模板信息未被进行推送规则判断,则该封装的消息就不存在于步骤S508中获取的消息中在消息封装线程、推送对象确定线程和规则过滤线程下一次开始按序读取序号起至预设时长时,如果该封装的消息所对应的序号存在于下一次所确定的最小初始序号至选取的目标最大序号中,则可以获取该封装的消息,并判断该封装的消息所对应的推送模板信息是否符合推送规则。
比如,结合步骤S504~S508中的例子,封装的消息M6所对应的推送模板信息未被进行推送规则判断,则M6就不存在步骤S506获取的消息中,那么在消息封装线程、推送对象确定线程和规则过滤线程下一次开始按序读取序号起达到预设时长时,所确定的最小初始序号至选取的目标最大序号为6~8,则消息M6所对应的序号6存在于下一次所确定的最小初始序号至选取的目标最大序号6~8中,则可以获取该消息M6,并判断该消息M6所对应的推送模板信息是否符合推送规则。
上述实施例中,先筛选出三个线程都读取并处理过的序号,然后将筛选出的序号所对应的封装的消息进行推送对象是否确定的判断以及是否满足推送规则的判断,相较于将所有的封装的信息都进行推送对象是否确定的判断以及是否满足推送规则的判断而言,大大提高了效率。
在一个实施例中,步骤S402包括:通过消息封装线程,根据相应获取的元信息中的推送消息获取参数,获取对应的消息内容;根据相应获取的元信息中的推送模板标识,获取对应的推送模板信息;将消息内容代入推送模板信息中进行封装处理,得到封装的消息。
其中,元信息包括推送消息获取参数和推送模板标识。推送消息获取参数,是用于获取要推送的消息内容的参数。
具体地,计算机设备可以通过消息封装线程,从相应获取的元信息中提取所包括的推送消息获取参数和推送模板标识,并通过提取的推送消息获取参数,确定从数据库中获取与提取的推送消息获取参数相应的参数值,根据推送消息获取参数及相应的参数值生成消息内容。计算机设备中预先存储了推送模板标识和推送模板信息之间的对应关系,根据该对应关系,可以获取与提取的推送模板标识对应的推送模板信息。进一步地,计算机设备可以将获取的消息内容代入至推送模板信息中进行封装处理,生成封装的消息。
上述实施例中,仅以元信息的方式存储至环形缓存区,通过缓存的元信息获取消息内容,并获取相应推送模板信息,从而封装得到消息,大大提高了环形缓存区的存储量,提高了存储资源的利用率,同时也不需要总是往环形缓存区中添加或更新元信息,进而提高了消息推送效率。
在一个实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送还包括:通过路由逻辑,将得到的消息路由至确定出的推送渠道所对应的环形缓存区并缓存;根据预设周期从推送渠道所对应的环形缓存区中提取缓存的消息;将提取的消息推送至设备标识所对应的设备。
其中,路由逻辑,是指用于实现路由功能的程序或进程。路由,是指把信息从源穿过网络传递到目的地。
具体地,计算机设备针对不同的推送渠道分别设置了对应的环形缓存区。计算机设备可以通过路由逻辑,以及根据确定出的推送渠道,将得到的消息路由至该推送渠道所对应的环形缓存区,并在该环形缓存区中将该消息进行缓存。
进一步地,计算机设备可以按照预设周期,从推送渠道所对应的环形缓存区中提取缓存的消息,并将提取的消息推送至设备标识所对应的设备。
上述实施例中,对不同的推送渠道设置环形缓存区以存储生成的消息,并以预设周期从该环形缓存区中获取存储的消息进行推送,避免了频繁的消息推送造成的高频次的接口调用,提高了机器性能。
如图6所示,在一个实施例中,提供了一种消息推送装置600,该装置600包括:序号确定模块602、序号读取模块604、元信息处理模块606以及消息推送模块608,其中:
序号确定模块602,用于分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号。
序号读取模块604,用于分别针对消息封装线程、推送对象确定线程和规则过滤线程,并发地从所对应的初始序号起按序地从环形缓存区中读取序号,并获取所读取的各序号对应的元信息。
元信息处理模块606,用于通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理。
消息推送模块608,用于根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
在一个实施例中,元信息处理模块606还用于通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息;通过推送对象确定线程,确定与相应获取的元信息相应的推送对象;通过规则过滤线程,针对相应获取的元信息所对应的推送模板信息进行推送规则判断;其中,消息封装线程、推送对象确定线程和规则过滤线程为并发执行。
在一个实施例中,消息推送模块608还用于获取从开始按序读取序号起至达到预设时长时,得到的封装的消息;从得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
如图7所示,在一个实施例中,消息推送模块608包括:
最大序号确定模块608a,用于确定从开始按序读取序号起至达到预设时长时,消息封装线程、推送对象确定线程和规则过滤线程所分别读取到的最大序号。
目标最大序号确定模块608b,用于从确定的各个最大序号中取最小值,得到目标最大序号。
最小初始序号确定模块608c,用于从消息封装线程、推送对象确定线程和规则过滤线程分别所对应的初始序号中选取最小值,得到最小初始序号。
消息选取模块608d,用于从得到的封装的消息中,选取由最小初始序号至目标最大序号中的各个序号所对应的消息;从选取的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
如图8所示,在一个实施例中,元信息处理模块606包括:
消息内容获取模块606a,用于通过消息封装线程,根据相应获取的元信息中的推送消息获取参数,获取对应的消息内容。
推送模板获取模块606b,用于根据相应获取的元信息中的推送模板标识,获取对应的推送模板信息。
消息封装模块606c,用于将消息内容代入推送模板信息中进行封装处理,得到封装的消息。
如图9所示,在一个实施例中,元信息处理模块606还包括:
设备标识获取模块606d,用于通过推送对象确定线程,根据相应获取的元信息中的待推送用户标识,从数据库中查找与待推送用户标识对应的设备标识。
操作系统种类标识获取模块606e,用于获取与设备标识对应的操作系统种类标识。
推送渠道确定模块606f,用于根据操作系统种类标识确定出相应的推送渠道;推送渠道和设备标识所对应的设备为确定出的推送对象。
在一个实施例中,消息推送模块608还用于通过路由逻辑,将得到的消息路由至确定出的推送渠道所对应的环形缓存区并缓存;根据预设周期从推送渠道所对应的环形缓存区中提取缓存的消息;将提取的消息推送至设备标识所对应的设备。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如下步骤:分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;分别针对消息封装线程、推送对象确定线程和规则过滤线程,并发地从所对应的初始序号起按序地从环形缓存区中读取序号,并获取所读取的各序号对应的元信息;通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
在一个实施例中,通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理包括:通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息;通过推送对象确定线程,确定与相应获取的元信息相应的推送对象;通过规则过滤线程,针对相应获取的元信息所对应的推送模板信息进行推送规则判断;其中,消息封装线程、推送对象确定线程和规则过滤线程为并发执行。
在一个实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送包括:获取从开始按序读取序号起至达到预设时长时,得到的封装的消息;从得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在一个实施例中,从所述得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送包括:确定从开始按序读取序号起至达到预设时长时,消息封装线程、推送对象确定线程和规则过滤线程所分别读取到的最大序号;从确定的各个最大序号中取最小值,得到目标最大序号;从消息封装线程、推送对象确定线程和规则过滤线程分别所对应的初始序号中选取最小值,得到最小初始序号;从得到的封装的消息中,选取由最小初始序号至目标最大序号中的各个序号所对应的消息;从选取的所述消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在一个实施例中,通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息包括:通过消息封装线程,根据相应获取的元信息中的推送消息获取参数,获取对应的消息内容;根据相应获取的元信息中的推送模板标识,获取对应的推送模板信息;将消息内容代入推送模板信息中进行封装处理,得到封装的消息。
在一个实施例中,通过推送对象确定线程,确定与相应获取的元信息相应的推送对象包括:通过推送对象确定线程,根据相应获取的元信息中的待推送用户标识,从数据库中查找与待推送用户标识对应的设备标识;获取与设备标识对应的操作系统种类标识;根据操作系统种类标识确定出相应的推送渠道;推送渠道和设备标识所对应的设备为确定出的推送对象。
在一个实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送还包括:通过路由逻辑,将得到的消息路由至确定出的推送渠道所对应的环形缓存区并缓存;根据预设周期从推送渠道所对应的环形缓存区中提取缓存的消息;将提取的消息推送至设备标识所对应的设备。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如下步骤:分别确定消息封装线程、推送对象确定线程和规则过滤线程在存储多个元信息的环形缓存区中所对应的初始序号;分别针对消息封装线程、推送对象确定线程和规则过滤线程,并发地从所对应的初始序号起按序地从环形缓存区中读取序号,并获取所读取的各序号对应的元信息;通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理;根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送。
在一个实施例中,通过消息封装线程、推送对象确定线程和规则过滤线程,并发地对相应获取的元信息进行消息封装处理、推送对象确定处理以及推送规则判断处理包括:通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息;通过推送对象确定线程,确定与相应获取的元信息相应的推送对象;通过规则过滤线程,针对相应获取的元信息所对应的推送模板信息进行推送规则判断;其中,消息封装线程、推送对象确定线程和规则过滤线程为并发执行。
在一个实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送包括:获取从开始按序读取序号起至达到预设时长时,得到的封装的消息;从确定的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在一个实施例中,从所述得到的封装的消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送包括:确定从开始按序读取序号起至达到预设时长时,消息封装线程、推送对象确定线程和规则过滤线程所分别读取到的最大序号;从确定的各个最大序号中取最小值,得到目标最大序号;从消息封装线程、推送对象确定线程和规则过滤线程分别所对应的初始序号中选取最小值,得到最小初始序号;从得到的封装的消息中,选取由最小初始序号至目标最大序号中的各个序号所对应的消息;从选取的所述消息中,选取所对应的元信息被确定出推送对象的、且与所对应的元信息对应的推送模板信息符合推送规则的消息并推送。
在一个实施例中,通过消息封装线程,根据相应获取的元信息获取对应的消息内容并封装,得到封装的消息包括:通过消息封装线程,根据相应获取的元信息中的推送消息获取参数,获取对应的消息内容;根据相应获取的元信息中的推送模板标识,获取对应的推送模板信息;将消息内容代入推送模板信息中进行封装处理,得到封装的消息。
在一个实施例中,通过推送对象确定线程,确定与相应获取的元信息相应的推送对象包括:通过推送对象确定线程,根据相应获取的元信息中的待推送用户标识,从数据库中查找与待推送用户标识对应的设备标识;获取与设备标识对应的操作系统种类标识;根据操作系统种类标识确定出相应的推送渠道;推送渠道和设备标识所对应的设备为确定出的推送对象。
在一个实施例中,根据所对应的元信息的推送对象确定结果和推送规则判断结果,得到确定出推送对象的、且符合推送规则的封装的消息并推送还包括:通过路由逻辑,将得到的消息路由至确定出的推送渠道所对应的环形缓存区并缓存;根据预设周期从推送渠道所对应的环形缓存区中提取缓存的消息;将提取的消息推送至设备标识所对应的设备。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。