消息推送方法、装置、计算机设备及存储介质与流程

文档序号:15272043发布日期:2018-08-28 22:33阅读:138来源:国知局

本发明涉及消息处理领域,尤其涉及一种消息推送方法、装置、计算机设备及存储介质。



背景技术:

消息推送平台是用于推送消息的平台,该消息推送平台可以与多个app相连,用于给app的用户推送相应的消息。由于该消息推送平台服务多个app,使得该消息推送平台的服务器在高峰发送时段进行消息推送时,消息数量多,使得数据库读写频繁。由于消息推送平台的功能在不断进行优化以及一些新功能的开发,使得消息推送平台对应的的服务器需要重启,或者由于服务器宕机也会导致服务器需要重启。在服务器重启时,由于消息推送平台的服务器没有保存重启前正在推送但没有推送成功的消息,使得服务器重启后无法继续发送该消息,导致用户无法接收到重启前正在接收的消息。而且,当前消息推送平台在消息推送过程中,容易将已经推送过或者已经超期无效的消息推送给用户,使得用户接收到重复消息或非有效消息,影响用户对消息推送平台推送消息的准确性和及时性的印象。



技术实现要素:

本发明实施例提供一种消息推送方法、装置、计算机设备及存储介质,以解决当前消息推送平台容易推送重复消息或非有效消息的问题。

第一方面,本发明实施例提供一种消息推送方法,包括:

获取消息推送任务,所述消息推送任务包括消息推送任务id和至少一个用户id;

基于所述消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据;

采用至少一个校验规则对所述目标消息任务数据进行校验,获取校验结果;

若所述校验结果为校验通过时,将所述目标消息任务数据推送给至少一个所述用户id对应的客户端,并将所述目标消息任务数据的任务状态更新为推送成功状态。

第二方面,本发明实施例提供一种消息推送装置,包括:

消息推送任务获取模块,用于获取消息推送任务,所述消息推送任务包括消息推送任务id和至少一个用户id;

目标消息任务数据获取模块,用于基于所述消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据;

校验处理模块,用于采用至少一个校验规则对所述目标消息任务数据进行校验,获取校验结果;

目标消息任务发送模块,用于若所述校验结果为校验通过时,将所述目标消息任务数据推送给至少一个所述用户id对应的客户端,并将所述目标消息任务数据的任务状态更新为推送成功状态。

第三方面,本发明实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述消息推送方法的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述消息推送方法的步骤。

本发明实施例提供的消息推送方法、装置、计算机设备及存储介质,通过基于消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据,以保证目标消息任务数据中的消息不会重复发送给用户;然后采用至少一个校验规则对目标消息任务数据进行校验,将校验结果为校验通过的目标消息任务数据推送给至少一个用户id对应的客户端,并更新目标消息任务数据的任务状态为推送成功状态,以确保下次推送时不再重复推送相同内容的消息给同一用户id对应的客户端。该消息推送方法、装置、计算机设备及存储介质,可实现将待推送状态的目标消息任务数据发送给对应的用户id的客户端,避免推送重复消息或非有效消息。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例1中消息推送方法的一流程图。

图2是本发明实施例1中消息推送方法的另一流程图。

图3是图1中步骤s30的一具体示意图。

图4是图1中步骤s40的一具体示意图。

图5是图1中步骤s40的另一具体示意图。

图6是本发明实施例2中消息推送装置的一原理框图。

图7是本发明实施例4中计算机设备的一示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

图1示出本实施例中消息推送方法的流程图。该消息推送方法应用在消息推送平台中,具体应用在消息推送平台的服务器上。用于对需要通过消息推送平台推送的消息对应的状态进行记录,并依据其状态进行消息推送,以避免出现重复推送或无效推送,从而避免将重复消息或非有效消息推送给用户对应的客户端。该客户端可以是用户所采用的智能手机和pad等终端。如图1所示,该消息推送方法包括如下步骤:

s10:获取消息推送任务,消息推送任务包括消息推送任务id和至少一个用户id。

消息推送平台的服务器获取业务平台发送的至少一个消息推送任务。该业务平台是消息推送平台所对应的app的平台。平台管理员可通过业务平台向消息推送平台的服务器发送消息推送任务,以使服务器接收到消息推送任务后,向特定用户推送相应的消息,此处的特定用户是指消息所要推送的用户。每一消息推送任务都携带有唯一对应的消息推送任务id。其中,消息推送任务id是消息推送任务对应的标识,消息推送任务id可用于唯一识别消息推送任务。消息推送任务是指业务平台推送消息给特定用户的任务。该消息推送任务还包括用户id,用户id是指用户在一业务平台中存储的用户标识,该用户id可用于识别在业务平台中注册的每一用户。该用户id包括但不限于用户在一业务平台中存储的用户账号。

s20:基于消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据。

目标消息任务数据是指在数据库中查找任务状态为待推送状态且与消息推送任务id对应的消息任务数据。其中,消息推送任务id是指存储在与该业务平台相连接的数据库中的消息任务数据中的消息任务标识。数据库是用于存储消息任务数据的存储空间,该数据库与消息推送平台的服务器相连,以使服务器可从数据库中获取对应的目标消息任务数据。该数据库可以是服务器内置的数据库,也可以是外部的与服务器相连的数据库。

具体地,数据库中设置有消息状态数据表,用于存储数据库中每一消息的原始推送任务id和对应的任务状态,该任务状态是指任务状态是指消息推送任务的消息对应的状态,该任务状态包括未推送状态、推送成功状态和推送失败状态。其中,未推送状态是指还未进行推送的状态,推送成功状态是指已经推送且顺利推送给特定用户的状态,推送失败状态是指已经推送但没有推送到特定用户的状态。导致消息处于推送失败状态的原因有多种,可以是消息在推送过程中因服务器宕机或重启而导致正在推送的消息没有顺利推送给特定用户。

本实施例中,数据库具体为redis数据库,redis数据库是一种存储键值数据的数据库。其中,redis是一个键值(key-value)存储系统,支持存储多种value类型的数据,value类型包括string(字符串)、list(链表)、set(集合)、zset(sortedset,有序集合)和hash(哈希类型)。redis支持主从机同步,可以从主服务器向任意数量的从服务器上同步数据,也可以向与每一从服务器关联的其他从服务器对应的主服务器同步数据,存储数据的存储效率高。

该redis数据库中存储有推送日志表,用于记录每一消息推送给对应的用户的任务状态。该推送日志表是指用于记录数据库中键值对的日志表。该推送日志表可以详细记录每一用户id的序号和消息的任务状态。每一消息任务中用户id对应的序号为redis数据库中推送日志表的键,通过每一用户id的序号的键就可以唯一确定一个用户。用户id对应的消息的任务状态为redis数据库中推送日志表的值,用于记录每一用户id对应的消息的任务状态。本实施例中,redis数据库采用特定的数字标识对任务状态进行记录,如任务状态为未推送状态时,在推送日志表中的值为0;任务状态为推送成功状态时,在推送日志表中的值为1;任务状态为推送失败状态时,在推送日志表中的值为2,以便于根据其数据标识确定其对应的任务状态。

具体地,消息推送平台的服务器查询与服务器相连接的数据库中的消息状态数据表,获取任务状态为待推送状态的消息任务数据,然后基于消息推送任务id获取目标消息任务数据。其中,待推送状态包括未推送状态和推送失败状态。可以理解地,服务器在获取不同业务平台的消息推送任务时,先查询数据库中的消息状态数据表,获取所有任务状态为未推送状态和/或推送失败状态的消息任务数据,并从获取的消息任务数据中获取原始推送任务id相对应的数据作为目标消息任务数据。该目标消息任务数据为本次消息推送任务所要推送给用户的数据。

进一步地,消息任务数据还包括与所要推送的消息相对应的消息推送类型、消息模板和应用程序id。

消息推送类型是指业务平台预先设置的用于限定所要推送的消息任务数据的推送类型。该消息推送类型与其数据类型相对应。该消息推送类型包括个人消息推送类型和公告消息推送类型。个人消息推送类型是指将消息推送任务推送给具体的某一个特定用户的消息推送类型,即其数据类型为专用推送类型。例如,一用户在某一时间使用自己的银行卡进行了一次消费,在消费完成后,银行平台会通过消息推送平台给该用户推送一银行卡消费消息,该银行卡消费消息对应的消息推送类型则为个人消息推送类型,即其数据类型为专用推送类型。公告消息推送类型是指消息推送任务推送给某一批特定用户的消息推送类型。例如,某一业务平台要将一会员福利消息通过消息推送平台推送给在该业务平台中办理会员的一批用户,该会员福利消息对应的消息推送类型则为公告消息推送类型,即其数据类型为通用推送类型。

消息模板是指消息任务数据中含有不同消息内容的模板,每一消息推送任务id都有对应的消息模板。例如,在给一用户推送银行卡消费消息时,只需基于银行卡消费消息对应的消息模板补充该用户的消费时间和消费金额。消息模板可以缩短消息的生成时间,方便及时将消息发送给对应的用户。

应用程序id是指业务平台对应的标识,具体指业务平台对应的app的标识。该应用程序id可用于识别某一业务平台,以确认发送消息推送任务的业务平台具体是哪一个。

s30:采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果。

校验规则是指用于检测目标消息任务数据是否符合预先设定的校验标准的规则,该校验规则可以包括判断目标消息任务数据中是否存在与消息推送任务id对应的关联终端id的校验规则,也可以包括判断系统当前时间是否在有效时间内的校验规则,或者同时包括上述两种校验规则。其中,关联终端id与用户id相关联,可以是指用户id对应的用户手机号。通过校验规则判断目标消息任务数据中是否存在与消息推送任务id对应的关联终端id,以确保该目标消息任务数据有对应的接收设备,即与关联终端id相对应的手机,以保证消息推送的有效性。有效时间是指业务平台预先设置的推送目标消息任务数据的推送时间段,该有效时间包括推送起始时间和推送结束时间,消息推送平台可以在推送起始时间至推送结束时间之间,推送目标消息任务数据给对应的至少一个用户,以保证消息推送的时效性。

在获取目标消息任务数据之后,采用预先设置的至少一个校验规则对目标消息任务数据进行校验,获取校验结果。该校验结果包括校验通过和校验失败。具体地,当判断目标消息任务数据中的消息推送任务id存在有对应的关联终端id,且消息推送平台的系统当前时间在业务平台预先设置的有效时间内,则采用校验规则对目标消息任务数据进行校验的校验结果为校验通过。反之,则校验失败。

s40:若校验结果为校验通过时,将目标消息任务数据推送给至少一个用户id对应的客户端,并将目标消息任务数据的任务状态更新为推送成功状态。

在校验结果为校验通过时,消息推送平台将目标消息任务数据推送给至少一个用户id对应的客户端。由于用户id是指用户在业务平台中存储的用户账号,该用户账号可以关联用户手机号或电子邮箱,因此,基于用户id就可以将目标消息任务数据发送给该用户id对应的客户端,使得用户可通过用户手机号对应的手机查看该目标消息任务数据,或者采用电脑或手机等客户端登录相应的用户账号或电子邮箱查看该目标消息任务数据。

进一步地,在将目标消息任务数据发送给该用户id对应的客户端后,目标消息任务数据的任务状态会更新为推送成功状态,表示该目标消息任务数据已经发送给用户id对应的客户端。将目标消息任务数据的任务状态更新为推送成功状态,可以帮助业务平台实时了解目标消息任务数据的任务状态。

步骤s10-s40,通过基于消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据,以保证目标消息任务数据中的消息不会重复发送给用户;然后采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果,以确保该目标消息任务数据推送的有效性和时效性;在校验结果为校验通过时,将目标消息任务数据推送给至少一个用户id对应的客户端,以确保目标消息任务数据推送的针对性;并将目标消息任务数据的任务状态更新为推送成功状态,以更新目标消息任务数据中的消息的状态,以确保下次推送时不再重复推送相同内容的消息给同一用户id对应的客户端。该消息推送方法,可以确保每一任务状态为待推送状态的目标消息任务数据都会发送给用户id对应的客户端,由于待推送状态包括未推送状态和推送失败状态,可以将还没有推送过的消息和已经推送过但推送失败的消息作为目标消息任务数据,推送给与至少一个用户id相对应的客户端,可避免消息推送过程中丢失导致未能推送给用户的情况发生。

在一具体实施方式中,如图2所示,在步骤s30,采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果的步骤之前,该消息推送还包括如下步骤:

s301:若目标消息任务数据为推送失败状态,则执行将目标消息任务数据推送给至少一个用户id对应的客户端,并将目标消息任务数据的任务状态更新为推送成功状态的步骤。

待推送状态包括未推送状态和推送失败状态。消息推送平台每次在将目标消息任务数据推送给至少一个用户id对应的客户端时,会存在推送失败的情况,造成该推送失败的原因包括但不限于在消息推送的过程中,服务器宕机或者该消息推送平台需要进行系统升级。若推送失败,则目标消息任务数据对应消息的任务状态更改为推送失败状态。当任务状态为推送失败状态时,该推送失败状态对应的目标消息任务数据还没有推送给特定用户,因此需要重新进行推送。相应地,消息推送平台在获取需要推送给特定用户的消息,需将其对应的任务状态预先设置为未推送状态,以说明该未推送状态对应的目标消息任务数据是需要推送但是还没有推送给用户id对应的客户端的消息任务数据。

本实施例中,当目标消息任务数据对应的任务状态为推送失败状态时,该推送失败状态对应的目标消息任务数据需要再次推送给对应的用户id的客户端,以保证对应的用户在客户端上可以接收到消息推送平台发送的目标消息任务数据的内容。在推送成功后,需将该目标消息任务数据对应的任务状态会更新为推送成功状态,以避免后续重复推送该目标消息任务数据。

由于推送失败状态对应的目标消息任务数据已经给用户id对应的客户端发送一次但用户id对应的客户端没有顺利接收到该目标消息任务数据,在发送给用户id对应的客户端之前已经执行过步骤s30,即采用至少一个校验规则对目标消息任务数据进行校验的步骤,因此,推送失败状态对应的目标消息任务数据不需要进行校验,可以直接执行将目标消息任务数据推送给至少一个用户id对应的客户端,并将目标消息任务数据的任务状态更新为推送成功状态的步骤,以达到节省校验时间的目的。

s302:若目标消息任务数据为未推送状态,则执行采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果的步骤。

当目标消息任务数据中的任务状态为未推送状态时,表示该目标消息任务数据还没有推送给对应的用户,则应该对该未推送状态对应的目标消息任务数据采用预先设置的校验规则对其进行校验,当该目标消息任务数据中的消息推送任务id有对应的关联终端id(即满足消息推送用户有效性的校验规则),且系统当前时间在预先设置的有效时间内(即满足消息推送的时效性的校验规则),则获取校验通过的检验结果。

若目标消息任务数据中的消息推送任务id没有对应的关联终端(即不满足消息推送用户有效性的校验规则),或者系统当前时间超过预先设置的有效时间,则表示该目标消息任务数据不符合校验规则(即不满足消息推送的时效性的校验规则),对应的校验结果为校验失败,则删除该目标消息任务数据,以避免重复对该目标消息任务数据进行校验,并节省数据库中的存储空间。

在一具体实施方式中,如图3所示,步骤s30,采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果,具体包括如下步骤:

s31:基于消息推送任务id查询数据库,判断是否存在与消息推送任务id对应的关联终端id。

基于消息推送任务id查询数据库,获取与消息推送任务id对应的目标消息任务数据,判断该目标消息任务数据中是否存在关联终端id。若目标消息任务数据中存在关联终端id,则执行步骤s32。若目标消息任务数据中不存在关联终端id,则执行步骤s34。

s32:获取消息推送任务id对应的有效时间,判断系统当前时间是否在有效时间内。

基于消息推送任务id,获取与该消息推送任务id对应的有效时间,该有效时间是预先设置的与消息推送发任务id关联的有效时间,一个消息推送任务id对应一个有效时间,当消息推送平台推送该消息推送任务id对应的消息时,若系统当前时间超过预先设置的有效时间,则执行步骤s34。当消息推送平台推送该消息推送任务id对应的消息时,对应的系统当前时间在预先设置的有效时间内,则执行步骤s33。

本实施例中,该有效时间可以精确到每秒,以确保有效时间内的目标消息任务数据推送给用户id对应的客户端的时间精确度。例如,在一特定的节假日时间,不同业务平台都想赶在节假日当天时间结束之前,将相关的业务促销的消息通过消息推送平台推送给对应的用户;即在目标消息任务数据的消息推送类型为公告消息推送类型(即通用推送类型)时,对应的用户数量会很大。当不同业务平台都想在该节假日当天时间结束之前将对应活动的消息发送给对应的用户,如果在节假日当天时间这一有效时间结束之后还没有将消息发送给对应的用户,则这部分消息为超过有效时间的目标消息任务数据,没有必要再发送,因为与该节假日当天时间相关的活动已经结束了。因此,在推送消息推送任务id对应的目标消息任务数据中的消息时,需判断系统当前时间是否在有效时间内,避免消息推送平台将超过有效时间的消息推送给对应的用户,没有达到消息推送的目的反而影响用户对消息推送平台或业务平台的消息推送时效性的印象。

s33:若存在与消息推送任务id对应的关联终端id,且系统当前时间在有效时间内,则获取校验通过的校验结果。

当目标消息任务数据中存在与消息推送任务id对应的关联终端id,以确保该目标消息任务数据有对应的接收设备,即与关联终端id相对应的手机,以保证消息推送的有效性;并且消息推送平台在推送目标消息任务数据中的消息时,对应的系统当前时间在预先设置的该消息推送任务id对应的有效时间内,以确保消息推送的时效性;在上述两个条件同时符合时,表示该目标消息任务数据中的消息板符合预先设置的校验规则,在检验完成后,对应的校验结果为校验通过,消息推送平台会基于该校验通过的校验结果将目标消息任务数据中消息模板推送给至少一个用户id对应的客户端。

s34:若不存在与消息推送任务id对应的关联终端id,或者系统当前时间不在有效时间内,则获取校验失败的校验结果。

当目标消息任务数据中不存在用户id关联的终端设备,则表示该目标消息任务数据中的消息不存在可以接收该消息的用户,则校验结果为校验失败。或者,消息推送平台推送目标消息任务数据中的消息时,系统当前时间不在有效时间内,则说明该消息已经失效,无需再进行推送,则基于校验规则得到的校验结果为校验失败,表示该目标消息任务数据中的消息不需要发送给对应的用户,减少业务平台的发送量,可以避免后续继续推送目标消息任务数据中的消息给对应的用户。

在一具体实施方式中,目标消息任务数据包括通用消息模板,其中,通用消息模板是指消息推送平台预先存储的无需更改,可直接发送给用户id对应的客户端的消息模板。如图4所示,步骤s40,将目标消息任务数据推送给至少一个用户id对应的客户端,具体包括如下步骤:

s411:若目标消息任务数据的数据类型为通用推送类型,则将通用消息模板推送给至少一个用户id对应的客户端。

若目标消息任务数据的数据类型为通用推送类型,则表示该目标消息任务数据中的消息对应的消息推送类型属于公告消息推送类型,不存在需要修改的地方,消息推送平台可以直接将该通用消息模板作为所要推送的消息推送给至少一个用户id对应的的客户端。例如,业务平台要通过消息推送平台对属于该业务平台的会员发送积分福利的消息,可预先创建关于积分福利的通用消息模板,由于该积分福利对应的通用消息模板是针对该业务平台的所有会员进行推送的,因此,可以将该通用消息模板作为所要推送的消息直接发送给对应的每一个会员(即用户id对应的用户)使用的客户端。

s412:若目标消息任务数据的数据类型为专用推送类型,则分别获取与至少一个用户id相对应的用户信息,将每一用户信息与通用消息模板结合形成有效个人消息,并将每一有效个人消息推送给用户id对应的客户端。

若目标消息任务数据的数据类型为专用推送类型,则表示该目标消息任务数据中的消息推送模板为专用推送类型,需要根据每一特定用户的用户信息对通用消息模板中的可修改部分进行修改,以将该可修改部分修改为与该特定用户的用户信息,以形成所要推送的消息,并将所要推送的消息推送给用户id对应的客户端。用户信息包括但不限于用户姓名,具体的业务信息,如银行卡消费记录等。消息推送平台将用户信息结合通用消息模板形成的消息推送给用户id对应的客户端,可以使特定用户了解属于自己的关于特定业务的消息内容。

例如,业务平台在每个月固定的时间都会通过消息推送平台给业务平台中每一个用户发送该用户上个月的消费情况和积分情况等目标消息任务数据,由于每个用户id对应的用户姓名、消费情况和积分情况都不尽相同,因此需预先获取与用户id相对应的用户信息,并基于消息推送任务id获取通用消息模板,然后再通用消息模板中将可修改部分修改为该用户的用户信息(包括但不限于本实施例提及的用户姓名、消费情况和该用户积分情况),以形成要推送的消息,并将该消息发送给该用户id对应的终端设备,让用户了解自己在该业务平台中上个月的消费情况和积分情况。

在一具体实施方式中,如图5所示,步骤s40,将目标消息任务数据推送给至少一个用户id对应的客户端,具体还包括如下步骤:

s421:若目标消息任务数据的用户数据量大于预设值,则将目标消息任务数据的用户数据量按预设分片规则进行分片处理,获取至少两个分片任务数据。

当目标消息任务数据中的消息推送类型为公告消息推送类型时,则可以说明该目标消息任务数据所要推送的用户数据量是比较大的,因此需先获取目标消息任务数据所要推送的用户的用户数据量。其中,预设值是指预先设置数量值,用于评判是否需要进行分片处理的值。分片规则是指将目标消息任务数据中用户id对应的用户数据量分成至少两个分片任务数据的规则。分片任务数据是指将推送目标消息任务数据分成不同任务数据量的数据,使得每一分片任务数据的用户数据量均不大于预设值,以避免数据量过大而导致消息推送过程耗时较长。

例如,一目标消息任务数据需要推送给1000个用户,该目标消息任务数据对应的用户数据量为1000,该业务平台设置的一个任务进程一次推送的用户数据量的预设值为200,该目标消息任务数据的用户数据量大于预设值,消息推送平台会将该目标消息任务数据的用户数据量按照每200一批的用户数据量进行分片处理,以将该目标消息任务数据划分五个对应的分片任务数据。

s422:将至少两个分片任务数据通过至少两个任务进程,分别推送给至少一个用户id对应的客户端。

在获取至少两个分片任务数据后,给每一分片任务数据分别分配一对应的任务进程,以使目标消息任务数据可以通过至少两个任务进程进行并列处理,以提高消息推送的效率。可以理解地,目标消息任务数据中的用户数据量被分成多少分片任务数据,则消息推送平台就会给匹配多少个对应的任务进程,以通过不同的任务进程将目标消息任务数据中的消息推送给每一个用户id的客户端。

本实施例中,若目标消息任务数据中的用户数据量大于预设值,则需要将该目标任务数据中的用户id按照预设分片规则进行分片处理,分片成至少两个分片任务数据;再采用多个任务进程分别对至少两个分片任务数据进行处理,以将分片任务数据对应的消息推送给对应的用户id的客户端,可以提高消息推送效率,为后续待推送任务id对应的目标消息任务数据中的消息在有效时间内推送给对应的用户id的客户端提供了充足的时间。

该消息推送方法通过基于消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据,该待推送状态包括未推送状态和推送失败状态,对未推送状态对应的目标消息任务数据采用至少一个校验规则进行校验,在校验结果为校验通过时,将目标消息任务数据推送给至少一个用户id对应的客户端;对推送失败状态对应的目标消息任务数据重新推送给与至少一个用户id相对应的客户端,可避免消息推送过程中丢失导致未能推送给用户的情况发生。进一步地,在推送成功后,将目标消息任务数据的任务状态更新为推送成功状态,以确保下次推送时不再重复推送相同内容的消息给同一用户id对应的客户端。若目标消息任务数据中的用户id对应的用户数据量大于预设值时,将该目标消息任务数据进行分片处理,可以提高推送速度。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例2

图6示出与实施例1中消息推送方法一一对应的消息推送装置的原理框图。如图6所示,该消息推送装置包括消息推送任务获取模块10、目标消息任务数据获取模块20、校验处理模块30和目标消息任务发送模块40。其中,消息推送任务获取模块10、目标消息任务数据获取模块20、校验处理模块30和目标消息任务发送模块40的实现功能与实施例1中消息推送方法对应的步骤一一对应,为避免赘述,本实施例不一一详述。

消息推送任务获取模块10,用于获取消息推送任务,消息推送任务包括消息推送任务id和至少一个用户id。

目标消息任务数据获取模块20,用于基于消息推送任务id查询数据库,获取任务状态为待推送状态的目标消息任务数据。

校验处理模块30,用于采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果。

目标消息任务发送模块40,用于若校验结果为校验通过时,将目标消息任务数据推送给至少一个用户id对应的客户端,并将目标消息任务数据的任务状态更新为推送成功状态。

优选地,该消息推送装置还包括第一目标消息任务数据处理单元301和第二目标消息任务数据处理单元302。

第一目标消息任务数据处理单元301,用于若目标消息任务数据为推送失败状态,则执行将目标消息任务数据推送给至少一个用户id对应的客户端,并将目标消息任务数据的任务状态更新为推送成功状态的步骤。

第二目标消息任务数据单元302,用于若目标消息任务数据为未推送状态,则执行采用至少一个校验规则对目标消息任务数据进行校验,获取校验结果的步骤。

优选地,校验处理模块30包括第一校验处理单元31、第二校验处理单元32、第一校验结果获取单元33和第二校验结果获取单元34。

第一校验处理单元31,用于基于消息推送任务id查询数据库,判断是否存在与消息推送任务id对应的关联终端id。

第二校验处理单元32,用于获取消息推送任务id对应的有效时间,判断系统当前时间是否在有效时间内。

第一校验结果获取单元33,用于若存在与消息推送任务id对应的关联终端id,且系统当前时间在有效时间内,则获取校验通过的校验结果。

第二校验结果获取单元34,用于若不存在与消息推送任务id对应的关联终端id,或者系统当前时间不在有效时间内,则获取校验失败的校验结果。

优选地,目标消息任务发送模块40包括第一数据类型处理单元411和第二数据类型处理单元412。

第一数据类型处理单元411,用于若目标消息任务数据的数据类型为通用推送类型,则将通用消息模板推送给至少一个用户id对应的客户端。

第二数据类型处理单元412,用于若目标消息任务数据的数据类型为专用推送类型,则分别获取与至少一个用户id相对应的用户信息,将每一用户信息与通用消息模板结合形成有效个人消息,并将每一有效个人消息推送给用户id对应的客户端。

优选地,目标消息任务发送模块40包括用户数据量处理单元421和任务进程推送单元422。

用户数据量处理单元421,用于若目标消息任务数据的用户数据量大于预设值,则将目标消息任务数据的用户数据量按预设分片规则进行分片处理,获取至少两个分片任务数据。

任务进程推送单元422,用于将至少两个分片任务数据通过至少两个任务进程,分别推送给至少一个用户id对应的客户端。

实施例3

本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中消息推送方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例2中消息推送装置中的各模块/单元的功能,为避免重复,这里不再赘述。

可以理解地,所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号和电信信号等。

实施例4

图7是本发明一实施例提供的计算机设备的示意图。如图7所示,该实施例的计算机设备70包括:处理器71、存储器72以及存储在存储器72中并可在处理器71上运行的计算机程序73。处理器71执行计算机程序73时实现上述实施例1中消息推送方法的步骤,例如图1所示的步骤s10至s40。或者,处理器71执行计算机程序73时实现实施例2中消息推送装置中各模块/单元的功能,例如图6所示消息推送任务获取模块10、目标消息任务数据获取模块20、校验处理模块30和目标消息任务发送模块40的功能。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1