CN114968611B - 消息传输方法、消息服务器、终端及电子设备 - Google Patents

消息传输方法、消息服务器、终端及电子设备 Download PDF

Info

Publication number
CN114968611B
CN114968611B CN202110789565.2A CN202110789565A CN114968611B CN 114968611 B CN114968611 B CN 114968611B CN 202110789565 A CN202110789565 A CN 202110789565A CN 114968611 B CN114968611 B CN 114968611B
Authority
CN
China
Prior art keywords
message
target user
identifier
time
received
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
Application number
CN202110789565.2A
Other languages
English (en)
Other versions
CN114968611A (zh
Inventor
毕金龙
李盛阁
林伟嘉
胡文辉
郑敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Internet Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Internet Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Internet Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110789565.2A priority Critical patent/CN114968611B/zh
Publication of CN114968611A publication Critical patent/CN114968611A/zh
Application granted granted Critical
Publication of CN114968611B publication Critical patent/CN114968611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

本发明实施例提供了一种消息传输方法、消息服务器、终端及电子设备,该方法包括:对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。

Description

消息传输方法、消息服务器、终端及电子设备
技术领域
本发明涉及通信技术领域,尤其涉及一种消息传输方法、消息服务器、终端及电子设备。
背景技术
现有技术方案中,在线消息主要是使用推送方式实现,当发送消息到用户终端时,后台服务首先判断用户终端是否在线,如果在线将在线消息投递给该终端。终端收到实时消息后,返回确认给后台服务。如果终端长时间未返回确认,那么平台服务将消息放入发送消息缓存队列并定时进行重试发送。
现有消息存储架构方便提供了历史消息以及离线消息的拉取,对于实时消息主要通过实时推送实现,由于用户的进程执行中的异常、弱网环境等各类不可控因素,很难保障消息推送的及时接收,有较高可能发生消息丢失,往往需要平台与端实现确认、缓存以及重传机制,大大提升了系统整体的复杂度,降低系统处理的能力;对于推送依赖过高,对于消息推送丢失缺少容错机制;中间会有认证、内容审核、群成员列表查询等处理。
可见,现有的消息传输过程中时间序列的顺序难以保障容易造成消息的乱序和丢失。
发明内容
本发明实施例的目的是提供一种消息传输方法、消息服务器、终端及电子设备,以解决消息传输过程中时间序列的顺序难以保障容易造成消息的乱序和丢失的问题。
为了解决上述技术问题,本发明实施例是这样实现的:
第一方面,本发明实施例提供了一种消息传输方法,包括:
对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
第二方面,本发明实施例提供了另一种消息传输方法,包括:
向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;
接收所述消息服务器回复的第二消息。
第三方面,本发明实施例提供了一种消息服务器,包括:
消息处理单元,用于对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
消息存储单元,用于将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
消息发送单元,用于在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
第四方面,本发明实施例提供了一种终端,包括:
消息拉取单元,用于向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;
消息接收单元,用于接收所述消息服务器回复的第二消息。
第五方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现如第一方面或第二方面所述的消息传输方法步骤。
第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面或第二方面所述的消息传输方法步骤。
由以上本发明实施例提供的技术方案可见,本发明实施例通过对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的消息传输方法的一种流程示意图;
图2为本发明实施例提供的消息传输方法的模块结构示意图;
图3为本发明实施例提供的消息传输方法的另一种流程示意图;
图4为本发明实施例提供的消息传输方法的另一种流程示意图;
图5为本发明实施例提供的消息服务器的结构示意图;
图6为本发明实施例提供的终端的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
本发明实施例提供了一种消息传输方法、消息服务器、终端及电子设备。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明实施例提供一种消息传输方法,该方法的执行主体可以为消息服务器,其中,该消息服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是能够进行网络操作处理的服务器,如某网络资源配置的服务器等。该方法具体可以包括以下步骤:
步骤S110、对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间。
消息服务器在接收到由第一用户通过终端发送第一消息时,将先对第一消息进行消息处理。其中,所述消息处理可以包括确定第一消息的目标用户,所述目标用户包括作为第一消息传输端的第一用户和作为第二消息接收端的第二用户,例如,若所述第一消息为群组的聊天消息,则通过获取该群组的群成员列表确定所述第一消息的目标用户。所述消息处理还可以包括对第一消息的内容审核等。将对第一消息的完成消息处理的时间作为第一时间,并根据第一时间生成与所述第一消息对应的第一标识。
生成所述第一标识的算法可以多种多样,在一种实施方式中,所述第一标识可以由如下算法表示:
<第一时间的时间戳><计数值><随机数>
其中,每个部分的大小可以根据实际的需要进行设定,例如,第一时间的时间戳为6个字节,计数值为4个字节,随机数为2个字节。所述时间戳可用于指示所述第一时间,所述第一时间越晚所述时间戳也就是越大;所述计数值可以由每生成一个第一标识加1的方式产生;所述随机数可通过预设的随机算法产生。由此可见,越晚完成消息处理的第一消息其对应的第一标识也就越大。
步骤S120、将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序。
在消息服务器的消息存储库中为每个目标用户分别设定一个消息队列用于保存离线消息。消息服务器基于在第一消息入库前生成的第一标识,将第一消息和第一标识结合作为第二消息,即离线消息,保存到每个目标用户的消息队列中。例如,对于一个群组的聊天消息,则需要将所述第二消息分别保存到,即将该第二消息分别保存到每个群组成员对应的消息队列中。
在每个消息队列中,可根据第一标识的大小进行排序,所述第一标识越大其在消息队列中的排序越靠后,即越晚完成消息处理的第一消息其对应的第二消息在消息队列中的排序越靠后。
另外,在消息服务器的消息存储库中还可以保存有针对每个会话的历史消息,即将第二消息作为历史消息保存到对应会话的历史消息队列中,使各会话的历史消息队列也基于第一标识进行排序。目标用户可向消息服务器发送用于拉取历史消息的查询请求,以获取相应会话的历史消息。
进一步地,在步骤S310前,所述方法还包括:
向各目标用户发送通知消息,所述通知消息包括保存的第二消息对应的第一标识。
在通过对第一消息进行消息处理,并生成第一标识后,可以向所述第一消息的各目标用户分别发送通知消息,用于提醒各目标用户接收到新的第二消息。所述通知消息的发送时间可以在第二消息入库前,也可以在第二消息入库后,此处不作具体地限定。
目标用户在接收到所述通知消息时,可以将所述通知消息中包含的第一标识与当前终端的起始第一标识进行比较,若所述通知消息中第一标识指示的第一时间晚于所述起始第一标识指示的第一时间,即所述通知消息中的第一标识大于所述起始第一标识,则确定目标用户需要从消息服务器拉取离线消息以实现消息同步,从而向消息服务器发送拉取消息。所述拉取消息中可以携带所述起始第一标识。
所述起始第一标识为在所述当前终端已接收到的第二消息中最晚接收到的第二消息的第一标识,或者为所有已接收到的第二消息的第一标识中指示的第一时间最晚的第一标识,即最大的第一标识。
若目标用户在接收到所述通知消息时,当前终端不存在起始第一标识,则可以将所述通知消息中包含的第一标识作为起始第一标识记录到拉取消息中,也可以直接通过拉取消息拉取全部的离线消息。
应理解的是,所述当前终端为所述目标用户当前使用的终端,由于目标用户可以登录并使用多个终端,在不同的终端其接收到的离线消息的内容和数量均可能不同,因此,同一目标用户在不同的终端其对应的起始第一标识也将不同,可根据实际的需要执行对离线消息的拉取过程,分别发送拉取请求。
进一步地,所述起始第一标识可以在每次发送拉取请求前确定,也可以在每次拉取到新的第二消息后进行更新。所述起始第一标识即可以保存在各个终端的本地缓存,也可以在每次更新后通过后台服务缓存云端,以防止终端清理缓存或者重新安装,也可以查询到起始第一标识。
步骤S130、在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
目标用户可根据实际的需要向消息服务器发送用于拉取离线消息的拉取请求,例如,所述目标用户可以在每次登陆终端时向所述消息服务器发送所述拉取消息,或者在每次对终端进行相应的操作后发送,或者还可以在每次接收到由消息服务器发送的通知后发送,此处不作具体地限定。
消息服务器在接收到目标用户的拉取请求后,从所述目标用户的消息队列中将所述目标用户未接收到的第二消息传输给目标用户,使目标用户当前使用的终端能够获取到最近的第二消息,以实现与目标用户最新的离线消息的同步。
进一步地,所述步骤S310的处理方式可以多种多样,本申请实施例仅给出了其中的一种实施方式,所述拉取请求包括起始第一标识。目标用户将当前终端的起始第一标识包含在拉取请求中发送给消息服务器。
所述步骤S310包括:
根据所述起始第一标识确定所述目标用户的消息队列所述目标用户未接收到第二消息,并回复给所述目标用户的终端;其中,所述目标用户未接收到第二消息的第一标识指示的第一时间晚于所述起始第一标识指示的第一时间。
消息服务器将所述起始第一标识作为起始位置,将所述目标用户的消息队列中起始位置后面的所有第二消息回复给目标用户的当前终端。
目标用户的当前终端在接收到新的第二消息后,则可以更新所述起始第一标识。
如图2所示,基于微服务设备,本申请实施例的消息服务器可以包括以下模块:消息存储WEB服务模块201、消息存储消费者模块202、通知同步消费者模块203、通知同步WEB服务模块204、内容审核服务模块205、群组服务模块206、在线通知代理模块207。
所述消息存储WEB服务模块201:主要是提供给目标用户通过公网进行消息传输以及拉取历史消息的WEB接口服务。
所述消息存储消费者模块202:从上行队列208获取需要存储的第一消息进行送审然后保存入消息存储库,然后将第二消息扩散后发送至下行队列209,所述第二消息扩散为将第二消息保存到各目标用户的消息队列中。
所述通知同步消费者模块203:主要是提供给用户进行拉取离线消息的WEB接口服务。
所述通知同步WEB服务模块204:从下行队列209获取通知消息,将通知消息保存到通知同步库,然后发送通知消息到在线通知代理207。
所述内容审核服务模块205:提供消息内容的审核服务。
所述群组服务模块206:提供群的管理与群成员管理功能。
所述在线通知代理模块207:提供目标用户的通知消息等推送服务,使目标用户的各终端都能够收到推送通知。
基于上述模型,如图3所示,步骤S311-S313为用户A执行的离线消息拉取过程的一种实施方式:
步骤S311,用户A登录当前终端后会先执行离线消息拉取过程,向通知同步WEB服务模块204发送拉取请求;
步骤S312,通知同步WEB服务模块204根据拉取请求从消息存储库的用户A的消息队列中获取到离线消息;
步骤S313,将获取到的离线消息进行排序、分页并返回给用户A的当前终端,使当前终端进行相关会话的提醒。
步骤S321-S323为用户A执行的拉取历史消息过程的一种实施方式:
步骤S321,在用户A通过当前终端进入群组会话后,可以查询该会话的历史消息,向消息存储WEB服务模块201发送查询请求;
步骤S322,消息存储WEB服务模块201根据查询请求对该会话查询历史消息,并回复给用户A的当前终端;
步骤S323,用户A获取到群组会话的历史消息。
步骤S331-S349为消息传输过程的一种实施方式:
步骤S331,用户A通过当前终端进入某个会话输入第一消息,当前终端将第一消息发送给消息存储WEB服务模块201;
步骤S332,如果该会话为是群组会话,消息存储WEB服务模块201向群组服务模块206发起查询以获取群组成员列表,即获取第一消息的目标用户;
步骤S333,消息存储WEB服务模块201在获取到目标用户后,将目标用户和第一消息发送到上行队列;
步骤S334,消息存储WEB服务模块201返回异步提交结果,向用户A指示第一消息发送成功;
步骤S335,消息存储WEB服务模块201从上行队列获取第一消息和第一消息的目标用户;
步骤S336,向内容审核服务模块205发起送审请求,对第一消息进行内容审核;
步骤S337,审核通过后,生成第一消息的第一标识,将第二消息保存在消息存储库中各目标用户的消息队列和对应会话的历史消息队列;
步骤S338,进行下行通知扩散,即向每个目标用户发送通知消息,将通知消息发送到下行队列中;
步骤S339,通知同步消费者模块203批量获取下行队列中的通知消息;
步骤S340,根据与各通知消息对应的第一标识进行排序,然后保存到同步消费者模块203的通知同步库中;
步骤S341,把通知消息发给在线通知代理模块207;
步骤S342、342,在线通知代理模块207通过长连接把通知消息发送到各目标用户的当前终端,包括用户A和用户B;
步骤S344,用户B收到通知消息后确定用户B当前终端的起始第一标识发送拉取请求,批量进行离线消息的拉取;
步骤S345,通知同步WEB服务模块204根据拉取请求向消息存储库进行查询;
步骤S346,将查询结果排序分页后返回给用户B;
步骤S347-S349,为用户A进行离线消息的拉取过程,与执行步骤S344-S246采用相同的操作,此处不再赘述。
为了保证用户接收到的下行消息序列的一致性,上述下行队列可以采用kafka。消息存储消费者模块202将消息进行扩散后,保持各目标用户的分区一致性,从而使发送给同一个目标用户的消息都由同一个消费线程处理。通知同步消费者模块203采用kafka的批量处理能力,使消费线程一次性拉取一批次通知消息,发给同一个目标用户的通知消息在按照对应的第一标识排序后保存离线然后发送到在线通知代理模块207,从而保障了下行通知消息的发送顺序的一致性。
由以上本发明实施例提供的技术方案可见,本发明实施例通过对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。
基于上述实施例,进一步地,所述第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的。
所述第二标识可以为作为当前终端发出的第一消息的通用唯一标识码(niversally Unique Identifier,UUID),可基于消息服务器接收到第一消息的第二时间来生成。所述第二标识的具体算法如下:
<第二时间的时间戳><对象哈希(Hash)值><随机数>
其中,每个部分的大小可以根据实际的需要进行设定,例如,第二时间的时间戳为6个字节,对象Hash值为6个字节,随机数为4个字节。其中,所述对象Hash值可以为基于第一消息的内容生成,或者发送所述第一消息的终端生成,或者发送所述第一消息的目标用户生成等。发送所述第一消息的当前终端可使用该UUID进行消息撤回。
当目标用户执行离线消息拉取过程或历史消息拉取过程时,在接收到第二消息后,可以使用各第二消息的UUID进行排序并进行显示。
由以上本发明实施例提供的技术方案可见,本发明实施例通过第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的,从而使目标用户根据接收到的第二消息显示包含的第一消息时,能够校正发送后由于消息服务器进行消息处理时长不同导致的消息顺序与发送顺序不一致,让各目标用户显示的内容保持一致。
如图4所示,本发明实施例提供一种消息传输方法,该方法的执行主体可以为终端,目标用户通过登陆所述终端执行消息传输。该方法具体可以包括以下步骤:
步骤S410、向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;
步骤S420、接收所述消息服务器回复的第二消息。
进一步地,所述拉取请求包括起始第一标识,所述起始第一标识为已接收的第二消息中最晚接收到的第二消息的第一标识。
进一步地,在接收所述消息服务器回复的第二消息后,所述方法还包括:
根据接收到的第二消息更新所述起始第一标识。
步骤S410-S420可以实现如图1-3所示的方法实施例,得取得相同或相近的技术效果,重复部分此处不再赘述。
由以上本发明实施例提供的技术方案可见,本发明实施例通过向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;接收所述消息服务器回复的第二消息。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。
基于上述实施例,进一步地,所述第二消息还包括第二标识,所述第二标识根据第二时间生成,所述第二时间为所述消息服务器接收到所述第一消息的时间;
在步骤S420后,所述方法还包括:
根据所述第二标识对接收到的第二消息进行排序并显示。
由以上本发明实施例提供的技术方案可见,本发明实施例通过第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的,从而使目标用户根据接收到的第二消息显示包含的第一消息时,能够校正发送后由于消息服务器进行消息处理时长不同导致的消息顺序与发送顺序不一致,让各目标用户显示的内容保持一致。
对应上述实施例提供的消息传输方法,基于相同的技术构思,本发明实施例还提供了一种消息服务器,图5为本发明实施例提供的消息服务器的结构示意图,该消息服务器用于执行图1至图3描述的消息传输方法,如图5所示,该消息服务器包括:消息处理单元501、消息存储单元502和消息发送单元503。
所述消息处理单元501用于对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;所述消息存储单元502用于将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;所述消息发送单元503用于在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
进一步地,所述拉取请求包括起始第一标识;
所述消息发送单元503用于根据所述起始第一标识确定所述目标用户的消息队列所述目标用户未接收到第二消息,并回复给所述目标用户的终端;其中,所述目标用户未接收到第二消息的第一标识指示的第一时间晚于所述起始第一标识指示的第一时间。
进一步地,所述消息存储单元502还用于向各目标用户发送通知消息,所述通知消息包括保存的第二消息对应的第一标识。
由以上本发明实施例提供的技术方案可见,本发明实施例通过对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。
基于上述实施例,进一步地,所述第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的。
由以上本发明实施例提供的技术方案可见,本发明实施例通过第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的,从而使目标用户根据接收到的第二消息显示包含的第一消息时,能够校正发送后由于消息服务器进行消息处理时长不同导致的消息顺序与发送顺序不一致,让各目标用户显示的内容保持一致。
本发明实施例提供的消息服务器能够实现上述消息传输方法对应的实施例中的各个过程,为避免重复,这里不再赘述。
需要说明的是,本发明实施例提供的消息服务器与本发明实施例提供的消息传输方法基于同一发明构思,因此该实施例的具体实施可以参见前述消息传输方法的实施,重复之处不再赘述。
对应上述实施例提供的消息传输方法,基于相同的技术构思,本发明实施例还提供了一种终端,图6为本发明实施例提供的终端的结构示意图,该终端用于执行图4描述的消息传输方法,如图6所示,该终端包括:消息拉取单元601和消息接收单元602。
所述消息拉取单元601用于向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;所述消息接收单元602用于接收所述消息服务器回复的第二消息。
进一步地,所述拉取请求包括起始第一标识,所述起始第一标识为已接收的第二消息中最晚接收到的第二消息的第一标识。
进一步地,所述消息接收单元602还用于根据接收到的第二消息更新所述起始第一标识。
由以上本发明实施例提供的技术方案可见,本发明实施例通过向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;接收所述消息服务器回复的第二消息。通过本发明实施例,保障拉取消息的连续性,降低对于在线推送通知的依赖,同时具有较好的容错性。
基于上述实施例,进一步地,所述第二消息还包括第二标识,所述第二标识根据第二时间生成,所述第二时间为所述消息服务器接收到所述第一消息的时间;
所述消息接收单元还用于根据所述第二标识对接收到的第二消息进行排序并显示。
由以上本发明实施例提供的技术方案可见,本发明实施例通过第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的,从而使目标用户根据接收到的第二消息显示包含的第一消息时,能够校正发送后由于消息服务器进行消息处理时长不同导致的消息顺序与发送顺序不一致,让各目标用户显示的内容保持一致。
本发明实施例提供的终端能够实现上述消息传输方法对应的实施例中的各个过程,为避免重复,这里不再赘述。
需要说明的是,本发明实施例提供的终端与本发明实施例提供的消息传输方法基于同一发明构思,因此该实施例的具体实施可以参见前述消息传输方法的实施,重复之处不再赘述。
对应上述实施例提供的消息传输方法,基于相同的技术构思,本发明实施例还提供了一种电子设备,该电子设备用于执行上述的消息传输方法,图7为实现本发明各个实施例的一种电子设备的结构示意图,如图7所示。电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对电子设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在电子设备上执行存储器702中的一系列计算机可执行指令。电子设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入输出接口705,一个或一个以上键盘706。
具体在本实施例中,电子设备包括有处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现以下方法步骤:
对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
本申请实施例还提供一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现以下方法步骤:
对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种消息传输方法,应用于消息服务器,其特征在于,所述方法包括:
对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端;所述拉取请求包括起始第一标识;所述根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端,包括:根据所述起始第一标识确定所述目标用户的消息队列所述目标用户未接收到第二消息,并回复给所述目标用户的终端;其中,所述目标用户未接收到第二消息的第一标识指示的第一时间晚于所述起始第一标识指示的第一时间。
2.根据权利要求1所述的方法,其特征在于,在获取所述目标用户通过终端发送的拉取请求之前,所述方法还包括:
向各目标用户发送通知消息,所述通知消息包括保存的第二消息对应的第一标识。
3.根据权利要求1所述的方法,其特征在于,所述第二消息还包括所述第一消息的第二标识,所述第二标识为根据接收到所述第一消息的第二时间确定的。
4.一种消息传输方法,应用于终端,其特征在于,所述方法包括:
向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;所述拉取请求包括起始第一标识,所述起始第一标识为已接收的第二消息中最晚接收到的第二消息的第一标识;
接收所述消息服务器回复的第二消息。
5.根据权利要求4所述的方法,其特征在于,在接收所述消息服务器回复的第二消息后,所述方法还包括:
根据接收到的第二消息更新所述起始第一标识。
6.根据权利要求4所述的方法,其特征在于,所述第二消息还包括第二标识,所述第二标识根据第二时间生成,所述第二时间为所述消息服务器接收到所述第一消息的时间;
在获取所述消息服务器回复的第二消息后,所述方法还包括:
根据所述第二标识对接收到的第二消息进行排序并显示。
7.一种消息服务器,其特征在于,包括:
消息处理单元,用于对接收到的第一消息进行消息处理,并根据第一时间生成所述第一消息的第一标识;其中,所述第一时间为对所述第一消息完成消息处理的时间;
消息存储单元,用于将所述第一消息和对应的第一标识作为第二消息,保存到与所述第一消息的各目标用户分别对应的消息队列中;其中,所述目标用户包括所述第一消息的发送端和接收端,各消息队列中的所有第二消息基于对应的第一标识指示的第一时间进行排序;
消息发送单元,用于在获取所述目标用户通过终端发送的拉取请求时,根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端;所述拉取请求包括起始第一标识;所述根据所述拉取请求将所述目标用户的消息队列中所述目标用户未接收到的第二消息回复给所述目标用户的终端,包括:根据所述起始第一标识确定所述目标用户的消息队列所述目标用户未接收到第二消息,并回复给所述目标用户的终端;其中,所述目标用户未接收到第二消息的第一标识指示的第一时间晚于所述起始第一标识指示的第一时间。
8.一种终端,其特征在于,包括:
消息拉取单元,用于向消息服务器发送目标用户的拉取请求,使所述消息服务器根据所述拉取请求确定所述目标用户的消息队列中所述目标用户未接收到的第二消息,并进行回复;其中,所述第二消息包括第一消息和第一标识,所述第一标识由所述消息服务器根据第一时间生成,所述第一时间为所述消息服务器对所述第一消息完成消息处理的时间,所述消息队列中的第二消息基于对应的第一标识指示的第一时间进行排序;所述拉取请求包括起始第一标识,所述起始第一标识为已接收的第二消息中最晚接收到的第二消息的第一标识;
消息接收单元,用于接收所述消息服务器回复的第二消息。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现如权利要求1-6任一项所述的消息传输方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述的消息传输方法步骤。
CN202110789565.2A 2021-07-13 2021-07-13 消息传输方法、消息服务器、终端及电子设备 Active CN114968611B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110789565.2A CN114968611B (zh) 2021-07-13 2021-07-13 消息传输方法、消息服务器、终端及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110789565.2A CN114968611B (zh) 2021-07-13 2021-07-13 消息传输方法、消息服务器、终端及电子设备

Publications (2)

Publication Number Publication Date
CN114968611A CN114968611A (zh) 2022-08-30
CN114968611B true CN114968611B (zh) 2023-10-27

Family

ID=82972823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110789565.2A Active CN114968611B (zh) 2021-07-13 2021-07-13 消息传输方法、消息服务器、终端及电子设备

Country Status (1)

Country Link
CN (1) CN114968611B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104301203A (zh) * 2014-09-10 2015-01-21 腾讯科技(深圳)有限公司 一种消息推送方法和设备
CN106878473A (zh) * 2017-04-20 2017-06-20 腾讯科技(深圳)有限公司 一种消息处理方法、服务器集群及系统
CN107770034A (zh) * 2016-08-16 2018-03-06 中国移动通信有限公司研究院 一种消息处理方法及装置
WO2019228369A1 (zh) * 2018-05-29 2019-12-05 Oppo广东移动通信有限公司 消息处理方法及相关产品
CN110659359A (zh) * 2019-09-20 2020-01-07 联想(北京)有限公司 一种数据处理方法、装置及电子设备
CN112600926A (zh) * 2020-12-16 2021-04-02 平安消费金融有限公司 一种消息推送方法、装置及计算机可读存储介质
CN112954007A (zh) * 2021-01-26 2021-06-11 深圳前海微众银行股份有限公司 消息传输方法、装置、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104301203A (zh) * 2014-09-10 2015-01-21 腾讯科技(深圳)有限公司 一种消息推送方法和设备
CN107770034A (zh) * 2016-08-16 2018-03-06 中国移动通信有限公司研究院 一种消息处理方法及装置
CN106878473A (zh) * 2017-04-20 2017-06-20 腾讯科技(深圳)有限公司 一种消息处理方法、服务器集群及系统
WO2019228369A1 (zh) * 2018-05-29 2019-12-05 Oppo广东移动通信有限公司 消息处理方法及相关产品
CN110659359A (zh) * 2019-09-20 2020-01-07 联想(北京)有限公司 一种数据处理方法、装置及电子设备
CN112600926A (zh) * 2020-12-16 2021-04-02 平安消费金融有限公司 一种消息推送方法、装置及计算机可读存储介质
CN112954007A (zh) * 2021-01-26 2021-06-11 深圳前海微众银行股份有限公司 消息传输方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114968611A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN108388479B (zh) 延迟消息推送方法、装置、计算机设备及存储介质
WO2016177285A1 (zh) 一种数据推送方法及装置
CN112527525B (zh) 基于消息队列的分布式事件总线处理方法、终端及介质
CN106603711B (zh) 通信方法、系统及消息服务器
CN107276970B (zh) 一种解绑、绑定方法和装置
CN113157466A (zh) 一种消息推送方法、装置、系统、电子设备和存储介质
JP2015527658A (ja) 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品
CN112115133A (zh) 分布式全局唯一id生成方法和系统、存储介质、设备
US20200403850A1 (en) Facilitating resilient and fault tolerant asynchronous messaging
CN104468248B (zh) 业务性能的监控方法、反向代理服务器、统计分析服务器及系统
CN110737655B (zh) 用于上报数据的方法和装置
CN111125681A (zh) 业务处理方法、装置及存储介质
CN114968611B (zh) 消息传输方法、消息服务器、终端及电子设备
CN112448883B (zh) 消息推送方法、装置、计算机设备和存储介质
CN113342503A (zh) 实时进度反馈方法、装置、设备及存储介质
CN111949521B (zh) 软件性能测试方法及装置
CN106899605B (zh) 基于stomp协议的通信方法和装置
CN110839061B (zh) 数据分发方法、装置及存储介质
CN107918877B (zh) 数据获取方法及装置
CN111475315B (zh) 服务器及订阅通知推送控制、执行方法
CN109684051B (zh) 一种混合式大数据任务异步提交的方法和系统
EP3687133B1 (en) System and method for synchronization of media objects between devices operating in a multiroom system
CN105141687B (zh) 一种生产消息的方法
CN107563942B (zh) 一种物流数据批量处理方法、物流处理系统以及处理装置
CN111552719A (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