CN113472856A - 一种消息推送处理方法、装置、电子设备及存储介质 - Google Patents
一种消息推送处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113472856A CN113472856A CN202110639629.0A CN202110639629A CN113472856A CN 113472856 A CN113472856 A CN 113472856A CN 202110639629 A CN202110639629 A CN 202110639629A CN 113472856 A CN113472856 A CN 113472856A
- Authority
- CN
- China
- Prior art keywords
- message
- event
- version number
- trigger request
- dimension
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Abstract
本发明提供了一种消息推送处理方法、装置、电子设备及存储介质。所述方法,包括:响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种消息推送处理方法、装置、电子设备及存储介质。
背景技术
相关技术中的消息总线的消息传输方式,仅能解决消息不丢失、不重复的问题(消息幂等性)。但是,解决消息幂等性的设计中,无法保证分布式系统中消息的时序性。对于发布者发布的消息而言,有些消息可能是与业务逻辑发生的时间顺序相关的。对于消息的订阅方而言,当收到消息的时间顺序与业务发生时间顺序一致时,才可以有效的处理消息,否则容易发生业务逻辑异常。
由于当前互联网大并发场景下,分布式系统、异步处理设计、网络延迟、业务逻辑等问题,消息很难保证时序性。当消息的时序产生异常时,容易导致消息对应的事件执行异常,通常需要人工介入处理数据,手工修复。
发明内容
本发明实施例提供一种消息推送处理方法、装置、电子设备及存储介质,以解决现有的消息推送处理方式容易导致消息时序异常,进而导致事件执行异常的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种消息推送处理方法,包括:
响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
可选地,所述方法,还包括:
响应于当前最新事件执行完成,将所述当前最新事件对应消息的事件版本号作为第一参考版本号更新至本地。
可选地,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,所述消息发送方设备在接收到事件触发请求的情况下,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号,以在发送针对所述事件触发请求的消息至消息接收方设备时,携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对所述目标维度下的前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,所述响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较的步骤,包括:
响应于接收到消息,获取所述消息携带的事件版本号,以及所述消息对应的目标维度,并与本地记录的所述目标维度下的第一参考版本号进行比较。
第二方面,本发明实施例提供了另一种消息推送处理方法,包括:
响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,还包括:
响应于所述消息发送成功,将为所述事件触发请求的事件版本号作为第二参考版本号更新至本地。
可选地,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,所述响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号的步骤,包括:
响应于事件触发请求,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号。
第三方面,本发明实施例提供了一种消息推送处理装置,包括:
版本号获取模块,用于响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
第一事件执行模块,用于如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
第二事件执行模块,用于如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
可选地,所述装置还包括:
第一版本号维护模块,用于响应于当前最新事件执行完成,将所述当前最新事件对应消息的事件版本号作为第一参考版本号更新至本地。
可选地,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,所述消息发送方设备在接收到事件触发请求的情况下,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号,以在发送针对所述事件触发请求的消息至消息接收方设备时,携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对所述目标维度下的前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,所述版本号获取模块,具体用于:响应于接收到消息,获取所述消息携带的事件版本号,以及所述消息对应的目标维度,并与本地记录的所述目标维度下的第一参考版本号进行比较。
第四方面,本发明实施例提供了一种消息推送处理装置,包括:
版本号生成模块,用于响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
消息发送模块,用于发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,所述装置还包括:
第二版本号维护模块,用于响应于所述消息发送成功,将为所述事件触发请求的事件版本号作为第二参考版本号更新至本地。
可选地,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,所述版本号生成模块,具体可以用于:响应于事件触发请求,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号。
第五方面,本发明实施例另外提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面,和/或第二方面所述的消息推送处理方法的步骤。
第六方面,本发明实施例另外提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面,和/或第二方面所述的消息推送处理方法的步骤。
在本发明实施例中,通过消息的生产者和订阅者分别维护一个事件版本号。根据事件版本号的变化规律,可以确定消息对应事件的业务连续性。如发现消息对应的事件,与订阅方本地维护的事件版本号是连续的,则认为当前接收的消息是最新消息,直接处理。如发现消息对应的事件,与订阅方本地维护的事件版本号不是连续的,则认为当前接收的消息不是最新的事件对应的消息,需要暂时将消息存储,等待最新的事件消息到来,然后基于每个消息携带的事件版本号确定各个事件的执行顺序。
附图说明
图1是本发明实施例中的一种消息推送处理方法的步骤流程图之一;
图2A是本发明实施例中的一种现有消息推送处理流程示意图;
图2B是本发明实施例中的一种消息推送处理方法的流程图;
图3是本发明实施例中的一种消息推送处理方法的步骤流程图之二;
图4是本发明实施例中的一种消息推送处理方法的步骤流程图之三;
图5是本发明实施例中的一种消息推送处理装置的结构示意图;
图6是本发明实施例中的另一种消息推送处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明实施例中一种消息推送处理方法的步骤流程图,应用于消息接收方设备。
步骤110,响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
步骤120,如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
步骤130,如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
如上述,现有的解决消息幂等性的设计中,很难保证分布式系统中消息的时序性。即优先触发的事件,优先处理。如优先触发事件的消息,未优先到达订阅方,也即消息接收方,则很难按事件的发生顺序处理消息。对于发布者(也即消息发送方)发布的消息而言,有些消息可能是与业务逻辑发生的时间顺序相关的。消息的订阅方,当收到消息的时间顺序与业务发生时间顺序一致时,才可以有效的处理消息,否则会发生业务逻辑异常。
如图2A所示,假设事件1和事件2有一定的逻辑关系,当事件1先发生时,事件2才是有效的,因此应先处理事件1对应的消息,再处理事件2对应的消息。只有优先处理事件1对应的消息,才可以针对事件2对应的消息做出正确的逻辑处理。
例如,假设事件1为充值事件,事件2为消费事件,此时消息发布方可以为任一用户所在客户端,订阅方为用于处理充值、消费等事件的服务端。订阅方将充值金额增加到用户余额中,根据总用户账户总余额是多少,才可以根据当前账户总余额,正确处理事件2对应的消费消息(余额充足则扣费,余额不足则认为支付失败)。由于当前互联网大并发场景下,分布式系统、异步处理设计、网络延迟、业务逻辑等问题,消息很难保证100%的时序性。当消息的时序产生异常(例如事件2的消息先到达消息代理服务,而且消息代理服务优先推送事件2的消息至订阅方等)时,通常需要人工介入处理数据,手工修复。
在本发明实施例中,为了解决消息时序性的问题,可以在分布式系统中,消息的生产者(也即消息发送方)和订阅者(也即消息接收方)可以分别维护一个事件版本号,事件版本号可以是一个连续递增的数字(例如每次递增指定数值的数字,其中初始事件版本号可以根据需求进行自定义设置),而且事件版本号每次的递增幅度可以根据需求进行自定义设置,对此本发明实施例不加以限定,当然根据需求事件版本号也可以是一个连续递减的数字,或者以其他方式逐渐变化的数字、符号组合等,对此本发明实施例不加以限定。此外,在本发明实施例中,还可以设置事件版本号可以周期性变化,例如每隔一定时间周期(例如一周、一个月等),将事件版本号恢复为初始值,重新开始连续递增,或者连续递减,等等。
那么在消息传递过程中,消息则可以携带其所对应的事件的事件版本号,消息接收方则可以根据消息所携带的事件版本号的值变化规律,确定消息对应事件的业务连续性。如发现消息对应的事件,与订阅方本地维护的作为参考版本号的事件版本号是连续的(例如事件版本号为连续递增的情况下,该消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值),则可以认为当前接收的消息是对应于最新事件的消息,可以直接处理相应事件。如发现消息对应的事件,与订阅方本地维护的事件版本号不是连续的(例如事件版本号为连续递增的情况下,该消息携带的事件版本号与所述第一参考版本号之间的差值不是指定数值),则可以认为当前接收的消息不是当前最新事件对应的消息,需要暂时将消息存储,等待最新的事件消息到来,在按照所存储的各个消息的事件版本号,确定各个消息的时序性并依次执行各个消息对应的事件。
其中,每个消息所携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到,也即通过消息携带的事件版本号确定各个消息的时序性,也即执行顺序。
参照图3,在本发明实施例中,还可以包括:
步骤140,响应于当前最新事件执行完成,将所述当前最新事件对应消息的事件版本号作为第一参考版本号更新至本地。
可选地,在本发明实施例中,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种。
可选地,在本发明实施例中,所述消息发送方设备在接收到事件触发请求的情况下,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号,以在发送针对所述事件触发请求的消息至消息接收方设备时,携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对所述目标维度下的前一次成功发送消息的事件触发请求分配的事件版本号。
参照图3,在本发明实施例中,所述步骤110进一步可以包括:
步骤111,响应于接收到消息,获取所述消息携带的事件版本号,以及所述消息对应的目标维度,并与本地记录的所述目标维度下的第一参考版本号进行比较。
在本发明实施例中,如果消息发送方设备需要通过消息代理服务将消息发送至消息接收方设备,那么消息代理服务在接收消息时,无序特殊处理,可以直接将消息推送给消息的订阅者。
消息订阅者收到消息后,首先取出消息中附带的事件版本号,与其本地维护的第一参考版本号做对比。假设上述的指定数值为1,那么此时当接收的消息的事件版本号-本地的第一参考版本号=1时,则认为接收到的消息是最新事件的消息,直接对消息进行正常业务逻辑处理,也即执行该消息对应的事件(例如缴费事件等)。当接收的消息版本号-本地消息版本号>1时,则认为接收到的消息不是最新事件的消息,需暂时将消息做存储,等待最新的事件消息到来,再统一按消息的时序性进行处理。
其中,对于消息发送方设备而言,其用户可以通过正常操作,触发事件请求,那么消息发送方设备在接到用户的事件触发请求时,除正常增改用户数据外,还可以维护一个作为第二参考版本号的事件版本号字段(例如event_msg_version字段)。
此外,在本发明实施例中,为了细分不同维度,保证各个维度下事件执行的时序性,还可以针对不同的维度分别进行事件版本号的维护,那么相应则可以在消息发送方设备本地存储各个维度下的第二参考版本号,并且针对每个维度的消息发送情况,实时更新相应维度下的第二参考版本号,保证第二参考版本号为相应维度下当前已成功发送消息的最新事件的事件版本号。
相应地,对于消息接收方设备而言,也可以针对不同维度进行其中的第一参考版本号,保证其中记录每个维度下的已执行完成的最新事件的事件版本号,作为相应维度下的第一参考版本号,对此本发明实施例不加以限定。
需要说明的是,在本发明实施例中,最新事件可以理解为在所有未执行的事件中,最先触发的事件,按照时序性需要最先执行的事件。
如果消息发送方按照事件触发从先到后的顺序,为其分配的事件版本号为连续递增的数值,那么在消息接收方则可以按照各个消息携带的事件版本号从低到高的顺序,依次执行各个消息对应的事件,从而可以保证先触发的事件先执行。
在本发明实施例中,有关联关系的事件消息(例如需要同时执行的事件的消息),可以用同一个事件版本号,且事件版本号可以与用户绑定,或者与某一特定场景下需维护消息时序性的唯一业务绑定,或者也可以与用户类型、业务类型的组合绑定。也即,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种。
如图2B所示,假设消息发送方设备为分布式系统中的任一设备,对于分布式系统而言,以用户为作为维度为例,假设指定数值为1。在接到用户的事件触发请求时,除正常增改用户数据外,还应该维护该用户的一个事件版本号字段(例如:event_msg_version)。分布式系统处理用户的事件触发请求时,可以同步线程、进程安全的方式(例如可采用乐观锁),对事件版本号字段进行递增1的操作。类似:event_msg_version=event_msg_version+1;其中,作为递增基础的event_msg_version也可以理解为当前的第二参考版本号,递增得到的event_msg_version即为本次触发事件的事件版本号。
当然,在本发明实施例中,发送方设备也可以将第二参考版本号存储于指定存储模块,如图2B所示,那么作为发送方的各个分布式系统可以共享其中的第二参考版本号。以使得同一用户在通过不同发送方设备进行发送消息时,可以实现各个发送方设备中的事件版本号的同步,保证同一用户通过不同发送方设备发送的消息所携带的事件版本号能够准确表征各个消息对应事件的执行顺序。
其中,消息接收方设备维护事件版本号的规则与消息发送方设备类似,在此不加以赘述。例如,消息接收方设备也可以维护各个维度,或者自身所属维度下的一个事件版本号字段(例如event_msg_version)用于记录第一参考版本号,并且通过递增的方式更新该字段,等等。
分布式系统处理完用户的触发事件请求,且成功递增事件版本号后,在发送针对相应触发事件请求的消息时则可以在消息中附带相应事件的事件版本号的信息。
参照图4,示出了本发明实施例中另一种消息推送处理方法的步骤流程图,可以应用于消息发送方设备。
步骤210,响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
步骤220,发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,在本发明实施例中,还可以包括:
步骤230,响应于所述消息发送成功,将为所述事件触发请求的事件版本号作为第二参考版本号更新至本地。
可选地,在本发明实施例中,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,在本发明实施例中,所述步骤210进一步可以包括:响应于事件触发请求,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号。
其中,关于消息发送方设备执行上述步骤的具体细节,以及消息发送方设备与消息接收方设备之间的消息发送过程与上述实施例类似,具体可以参考上述实施例中所述内容,在此不加以赘述。
在本发明实施例中,通过在业务系统中的消息生产者、消息消费者分别存储并维护一个事件版本号字段。而且事件版本号是连续的,订阅者通过消息的事件版本号与本地维护的事件版本号差值,确定事件发生的时序性。订阅者确定消息的时序性后,可选择进行正常业务处理,或者暂时存储消息至本地。从而可以解决系统因消息时序性问题导致的异常,而且几乎不影响正常消息的实时性处理。
参照图5,示出了本发明实施例中一种消息推送处理装置的结构示意图。
本发明实施例的消息推送处理装置可以应用于消息接收方设备,所述装置包括:版本号获取模块310、第一事件执行模块320和第二事件执行模块330。
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
版本号获取模块310,用于响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
第一事件执行模块320,用于如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
第二事件执行模块330,用于如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
可选地,在本发明实施例中,所述装置还包括:
第一版本号维护模块,用于响应于当前最新事件执行完成,将所述当前最新事件对应消息的事件版本号作为第一参考版本号更新至本地。
可选地,在本发明实施例中,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,在本发明实施例中,所述消息发送方设备在接收到事件触发请求的情况下,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号,以在发送针对所述事件触发请求的消息至消息接收方设备时,携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对所述目标维度下的前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,在本发明实施例中,所述版本号获取模块,具体用于:响应于接收到消息,获取所述消息携带的事件版本号,以及所述消息对应的目标维度,并与本地记录的所述目标维度下的第一参考版本号进行比较。
本发明实施例提供的消息推送处理装置能够实现图1至图3的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
参照图6,示出了本发明实施例中一种消息推送处理装置的结构示意图。
本发明实施例的消息推送处理装置可以应用于消息发送方设备,所述装置包括:版本号生成模块410和消息发送模块420。
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
版本号生成模块410,用于响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
消息发送模块420,用于发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
可选地,在本发明实施例中,所述装置还包括:
第二版本号维护模块,用于响应于所述消息发送成功,将为所述事件触发请求的事件版本号作为第二参考版本号更新至本地。
可选地,在本发明实施例中,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
可选地,在本发明实施例中,所述版本号生成模块,具体可以用于:响应于事件触发请求,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述信息处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述信息处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种消息推送处理方法,其特征在于,应用于消息接收方设备,所述方法包括:
响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
2.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
响应于当前最新事件执行完成,将所述当前最新事件对应消息的事件版本号作为第一参考版本号更新至本地。
3.根据权利要求1所述的方法,其特征在于,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
4.根据权利要求3所述的方法,其特征在于,所述消息发送方设备在接收到事件触发请求的情况下,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号,以在发送针对所述事件触发请求的消息至消息接收方设备时,携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对所述目标维度下的前一次成功发送消息的事件触发请求分配的事件版本号。
5.根据权利要求3所述的方法,其特征在于,所述响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较的步骤,包括:
响应于接收到消息,获取所述消息携带的事件版本号,以及所述消息对应的目标维度,并与本地记录的所述目标维度下的第一参考版本号进行比较。
6.一种消息推送处理方法,其特征在于,应用于消息发送方设备,所述方法包括:
响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
7.根据权利要求6所述的方法,其特征在于,还包括:
响应于所述消息发送成功,将为所述事件触发请求的事件版本号作为第二参考版本号更新至本地。
8.根据权利要求6所述的方法,其特征在于,所述消息发送方设备针对不同维度分别进行事件版本号的维护,一条消息携带一个实时版本号,且有关联关系的多个消息携带同一个版本号,同一维度下的实时版本号为连续递增的数字,所述维度包括用户维度、业务维度中的至少一种;所述消息发送方设备包括分布式系统。
9.根据权利要求8所述的方法,其特征在于,所述响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号的步骤,包括:
响应于事件触发请求,根据所述事件触发请求对应的目标维度,获取本地针对所述目标维度的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号。
10.一种消息推送处理装置,其特征在于,应用于消息接收方设备,所述装置包括:
版本号获取模块,用于响应于接收到消息,获取所述消息携带的事件版本号,并与本地记录的第一参考版本号比较,所述消息携带的事件版本号由消息发送方设备根据消息对应事件的触发顺序确定得到;
第一事件执行模块,用于如果所述消息携带的事件版本号与所述第一参考版本号之间的差值为指定数值,确认所述消息为当前的最新事件的消息,并执行所述消息对应的事件;
第二事件执行模块,用于如果所述事件版本号与所述第一参考版本号之间的差值不为指定数值,确认所述消息不是当前的最新事件的消息,并记录所述消息,直至接收到当前最新事件的消息,按照所记录的各个消息的时序性依次执行各个消息对应的事件;其中,每个消息的时序性由消息携带的事件版本号确定得到。
11.一种消息推送处理装置,其特征在于,应用于消息发送方设备,所述装置包括:
版本号生成模块,用于响应于事件触发请求,获取本地记录的第二参考版本号,并在所述第二参考版本号的基础上增加指定数值,得到针对所述事件触发请求的事件版本号;
消息发送模块,用于发送针对所述事件触发请求的消息至消息接收方设备,并在所述消息中携带所述事件版本号;
其中,所述第二参考版本号为所述消息发送方设备针对前一次成功发送消息的事件触发请求分配的事件版本号。
12.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述的消息推送处理方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的消息推送处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639629.0A CN113472856A (zh) | 2021-06-08 | 2021-06-08 | 一种消息推送处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639629.0A CN113472856A (zh) | 2021-06-08 | 2021-06-08 | 一种消息推送处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113472856A true CN113472856A (zh) | 2021-10-01 |
Family
ID=77869453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110639629.0A Pending CN113472856A (zh) | 2021-06-08 | 2021-06-08 | 一种消息推送处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472856A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999947A (en) * | 1997-05-27 | 1999-12-07 | Arkona, Llc | Distributing database differences corresponding to database change events made to a database table located on a server computer |
US20150256415A1 (en) * | 2013-07-09 | 2015-09-10 | Google Inc. | Browser notifications |
CN105978796A (zh) * | 2016-06-28 | 2016-09-28 | 乐视控股(北京)有限公司 | 基于不稳定移动网络的消息通信方法及系统 |
CN106599195A (zh) * | 2016-12-14 | 2017-04-26 | 北京邮电大学 | 一种海量网络数据环境下的元数据同步方法及系统 |
CN107819870A (zh) * | 2017-11-21 | 2018-03-20 | 广州视睿电子科技有限公司 | 增量拉取数据方法、装置、存储介质、终端设备和服务器 |
CN108737570A (zh) * | 2018-06-22 | 2018-11-02 | 北京奇艺世纪科技有限公司 | 一种信息推送方法、装置及系统 |
WO2018202127A1 (zh) * | 2017-05-04 | 2018-11-08 | 腾讯科技(深圳)有限公司 | 信息推送方法及装置、存储介质和电子装置 |
CN109597874A (zh) * | 2018-10-23 | 2019-04-09 | 重庆邂智科技有限公司 | 信息推荐方法、装置及服务器 |
CN109815291A (zh) * | 2018-12-28 | 2019-05-28 | 北京城市网邻信息技术有限公司 | 数据同步方法、装置、电子设备及存储介质 |
WO2019127916A1 (zh) * | 2017-12-29 | 2019-07-04 | 北京奇虎科技有限公司 | 基于分布式一致性协议实现的数据读写方法及装置 |
CN112418935A (zh) * | 2020-11-24 | 2021-02-26 | 陈敏 | 基于大数据和广告推送的数据处理方法及大数据平台 |
CN112817995A (zh) * | 2021-02-22 | 2021-05-18 | 北京奇艺世纪科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
-
2021
- 2021-06-08 CN CN202110639629.0A patent/CN113472856A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999947A (en) * | 1997-05-27 | 1999-12-07 | Arkona, Llc | Distributing database differences corresponding to database change events made to a database table located on a server computer |
US20150256415A1 (en) * | 2013-07-09 | 2015-09-10 | Google Inc. | Browser notifications |
CN105978796A (zh) * | 2016-06-28 | 2016-09-28 | 乐视控股(北京)有限公司 | 基于不稳定移动网络的消息通信方法及系统 |
CN106599195A (zh) * | 2016-12-14 | 2017-04-26 | 北京邮电大学 | 一种海量网络数据环境下的元数据同步方法及系统 |
WO2018202127A1 (zh) * | 2017-05-04 | 2018-11-08 | 腾讯科技(深圳)有限公司 | 信息推送方法及装置、存储介质和电子装置 |
CN107819870A (zh) * | 2017-11-21 | 2018-03-20 | 广州视睿电子科技有限公司 | 增量拉取数据方法、装置、存储介质、终端设备和服务器 |
WO2019127916A1 (zh) * | 2017-12-29 | 2019-07-04 | 北京奇虎科技有限公司 | 基于分布式一致性协议实现的数据读写方法及装置 |
CN108737570A (zh) * | 2018-06-22 | 2018-11-02 | 北京奇艺世纪科技有限公司 | 一种信息推送方法、装置及系统 |
CN109597874A (zh) * | 2018-10-23 | 2019-04-09 | 重庆邂智科技有限公司 | 信息推荐方法、装置及服务器 |
CN109815291A (zh) * | 2018-12-28 | 2019-05-28 | 北京城市网邻信息技术有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN112418935A (zh) * | 2020-11-24 | 2021-02-26 | 陈敏 | 基于大数据和广告推送的数据处理方法及大数据平台 |
CN112817995A (zh) * | 2021-02-22 | 2021-05-18 | 北京奇艺世纪科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
HYUN CHEON HWANG, JISU PARK,JIN GON SHON: "Design and Implementation of a Reliable Message Transmission System Based on MQTT Protocol in IoT", WIRELESS PERS COMMUN (2016)91, vol. 91, no. 4, pages 1765 - 1777, XP036109426, DOI: 10.1007/s11277-016-3398-2 * |
赵永国, 刘志霞: "移动端通用推送通知技术研究", 自动化与仪器仪表, no. 12, pages 13 - 15 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480990B (zh) | 区块链记账方法及装置 | |
JP6882474B2 (ja) | リプレイ攻撃の検出のためのシステム及び方法 | |
CN107332876B (zh) | 区块链状态的同步方法及装置 | |
EP3605947A1 (en) | Distributed system, message processing method, node, client, and storage medium | |
CN107276765B (zh) | 区块链中共识的处理方法及装置 | |
JP6905059B2 (ja) | リプレイ攻撃の検出のためのシステム及び方法 | |
CN111555963B (zh) | 消息推送方法、装置、电子设备及存储介质 | |
CN111770350B (zh) | 直播间消息拉取的方法、装置、计算机设备和存储介质 | |
CN105162879B (zh) | 实现多机房数据一致性的方法、装置及系统 | |
CN108965457A (zh) | 一种分布式集群系统的消息传递方法、装置、设备及介质 | |
CN110636128A (zh) | 一种数据同步方法、系统、电子设备及存储介质 | |
CN112597249B (zh) | 一种业务数据的同步分发存储方法及系统 | |
CN109361525B (zh) | 重启分布式部署多服务的方法、装置、控制终端及介质 | |
CN112583811A (zh) | 钱包找回方法、设备和存储介质 | |
CN111163148A (zh) | 一种区块链系统的共识状态的同步方法及相关设备 | |
CN113778652A (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN113468025A (zh) | 一种数据告警方法、系统、装置及存储介质 | |
CN111767128A (zh) | 执行定时任务的方法以及装置 | |
CN113112344B (zh) | 业务处理方法、设备、存储介质及计算机程序产品 | |
CN107967150B (zh) | 一种线程执行顺序确定方法、装置、设备及存储介质 | |
CN113849320A (zh) | 开发方法、控制方法及计算设备 | |
CN113472856A (zh) | 一种消息推送处理方法、装置、电子设备及存储介质 | |
CN116991948A (zh) | 区块数据同步系统和方法、电子设备和存储介质 | |
CN112184445A (zh) | 一种基于动态配置的异步通知方法及系统 | |
EP4287102A1 (en) | Cross-chain transaction processing method and apparatus, electronic device, and storage medium |
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 |