CN109951261A - 中间件消息传输补偿方法、装置、电子设备、存储介质 - Google Patents
中间件消息传输补偿方法、装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN109951261A CN109951261A CN201910216637.7A CN201910216637A CN109951261A CN 109951261 A CN109951261 A CN 109951261A CN 201910216637 A CN201910216637 A CN 201910216637A CN 109951261 A CN109951261 A CN 109951261A
- Authority
- CN
- China
- Prior art keywords
- event
- message
- message transmission
- transmits
- middleware
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明提供一种中间件消息传输补偿方法、装置、电子设备、存储介质,中间件消息传输补偿方法包括:所述中间件执行消息传输事件;所述消息传输失败时,获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。本发明提供的方法及装置提高消息重传的效率及准确性。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种中间件消息传输补偿方法、装置、电子设备、存储介质。
背景技术
随着信息化建设的日益深入,越来越多的企业开始进入深度应用的阶段。而计算机和网络技术的发展,使得分布式信息系统越来越得到广泛关注,并逐渐应用到各行业各企业的软件系统中。在信息传递的过程中,因为网络或者服务器宕机的原因,造成信息的丢失,为了解决此问题,引入了中间件来传递服务间的信息,中间件可以极大的提高消息的稳定,在消费者宕机的时候,还可以暂存这些消息,但是对于生产方,如果发送消息失败,业务场景难以为继,中间件自带的补偿方案难以观察且控制不便。
发明内容
本发明为了克服上述相关技术存在的缺陷,提供一种中间件消息传输补偿方法、装置、电子设备、存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本发明的一个方面,提供一种中间件消息传输补偿方法,包括:
所述中间件执行消息传输事件;
所述消息传输失败时,获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;
使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;
利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;
按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;
根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
可选地,所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
按预定数量获取所述事件补偿表中补偿状态为待执行的消息传输事件;
将所获取的消息传输时间的补偿状态更改为执行中;
按所述事件类型,对所获取的消息传输事件进行分组;以及
按所述分组,对所获取的消息传输事件进行重新传输。
可选地,所述按预定数量获取所述事件补偿表中补偿状态为待执行的消息传输事件之后,还包括:
向所获取的消息传输事件分配批次标识,所述批次标识用于区分不同批次的消息传输时间的重新传输。
可选地,所述消息传输事件的参数还包括消息传输事件的属性,所述消息传输事件的属性包括有序事件和无序事件,
所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
在同一事件类型下,将消息传输事件的属性为有序事件的消息传输事件按创建时间排序;
在同一事件类型下,自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输。
可选地,在自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输时,若任一消息传输事件重新传输失败,则不在对该重新传输失败消息传输事件之后的消息传输事件进行重新传输,并自该重新传输失败消息传输事件开始按所述排序顺序将所述消息传输事件更新为同一补偿状态。
可选地,所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
在同一事件类型下,同时对消息传输事件的属性为无序事件的消息传输事件重新传输。
可选地,所述按所述分组,对所获取的消息传输事件进行重新传输之前还包括:
将所获取的消息传输事件的事件锁定状态设置为锁定,其中,在所述消息传输事件重新传输成功后,所述消息传输事件的事件锁定状态更新为解锁,事件锁定状态为锁定的消息传输事件仅可由一个设备进行重新传输。
可选地,所述利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件包括:
利用所述分布式锁标记所述事件补偿表中同一事件类型的消息传输事件的数量,其中,
该事件类型下的消息传输事件重新传输成功后,使所述分布式锁标记的数量减一;
所述分布式锁标记的数量不为0时,该事件类型的数据仅能被所述重新传输的线程调用,当该事件类型下所述分布式锁标记的数量为0时,使该类型事件解锁。
可选地,各所述消息传输事件设置有消息重传映射表,所述消息重传映射表储存有消息传输事件的重新传输次数与下次重新传输时间的对应关系,所述消息重传映射表还提供消息传输事件的最大重新传输次数,所述消息传输事件的补偿状态还根据所述消息重传映射表更新。
可选地,所述中间件执行消息传输事件时,查询与该消息传输时间属于同一事件类型的前一消息传输时间是否储存于所述事件补偿表中,若是,则获取当前消息传输事件的参数,并关联待执行的所述补偿状态储存至所述事件补偿表中。
根据本发明的又一方面,还提供一种中间件消息传输补偿装置,所述中间件用于执行消息传输事件,包括:
获取模块,所述消息传输失败时,用于获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;
储存模块,用于使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;
标记模块,用于利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;
重传模块,用于按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;
更新模块,用于根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
根据本发明的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本发明的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
相比现有技术,本发明的优势在于:
本发明采用自动执行的方式,执行事件补偿表的补偿操作,进行事件的重新发送,同时利用分布式锁进行并发控制,支持分布式执行补偿。此外,考虑到事件产生具有时序性,还可以对于时间顺序,补偿次数等等,做到严格与实时的控制。保证系统更高效精准的运行,提高数据的传递效率与准确性。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的中间件消息传输补偿方法的流程图。
图2示出了根据本发明实施例的消息传输事件重新传输的流程图。
图3示出了根据本发明实施例的中间件消息传输补偿装置的模块图。
图4示意性示出本发明示例性实施例中一种计算机可读存储介质示意图。
图5示意性示出本发明示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
图1示出了根据本发明实施例的中间件消息传输补偿方法的流程图。中间件消息传输补偿方法包括如下步骤:
步骤S110:所述中间件执行消息传输事件。
具体而言,中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。
步骤S120:所述消息传输失败时,获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型。
具体而言,所述消息传输事件的参数可以包括事件名称、事件id、创建时间、属性(包括有序事件和无序事件)、事件类型、事件类型id、事件自增id、消息内容中的多种。事件自增id例如是随创建时间逐渐增大的事件id。
步骤S130:使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中。
具体而言,所述补偿状态可以包括待执行、执行中、执行失败、取消执行。
步骤S140:利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件。
步骤S150:按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输。
步骤S160:根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
在本发明提供的中间件消息传输补偿方法中,采用自动执行的方式,执行事件补偿表的补偿操作,进行事件的重新发送,同时利用分布式锁进行并发控制,支持分布式执行补偿。此外,考虑到事件产生具有时序性,还可以对于时间顺序,补偿次数等等,做到严格与实时的控制。保证系统更高效精准的运行,提高数据的传递效率与准确性。
在本发明的一些实施例中,所述中间件执行消息传输事件时,查询与该消息传输时间属于同一事件类型的前一消息传输时间是否储存于所述事件补偿表中,若是,则获取当前消息传输事件的参数,并关联待执行的所述补偿状态储存至所述事件补偿表中。由此,以避免同一事件下的消息传输逻辑产生错误。
在本发明的一些实施例中,上述步骤S150的具体实现可以参见图2。图2共示出3个步骤:
步骤S210:按预定数量获取所述事件补偿表中补偿状态为待执行的消息传输事件。
步骤S210之后可以包括向所获取的消息传输事件分配批次标识的步骤,所述批次标识用于区分不同批次的消息传输时间的重新传输。
步骤S220:将所获取的消息传输时间的补偿状态更改为执行中。
步骤S230:按所述事件类型,对所获取的消息传输事件进行分组。
步骤S240:按所述分组,对所获取的消息传输事件进行重新传输。
具体而言,考虑到中间件分布式执行重新传输任务的系统性能,每批次设定可以执行的事件的最大数量作为预定数量,以从所述事件补偿表中获取补偿状态为待执行的消息传输事件。由于同一事件类型的消息传输事件的关联性,在重新传输时,按事件类型进行消息传输事件的重新传输。在物流领域,不同的事件类型例如由的订单标识(或货源标识)来区分(换言之,一个订单id/一个货源id表示一个事件类型)。进一步地,在重新传输之间,将本批次的消息传输事件的补偿状态更改为执行中,以避免与其它补偿状态的消息传输事件混淆。
在本发明的一些实施例中,所述消息传输事件的参数包括消息传输事件的属性,所述消息传输事件的属性包括有序事件和无序事件。具体而言,同一事件类型下可以包括多个有序事件、多个无序事件、或者他们的组合。有序事件即指事件之间具有先后顺序的限定,比如先生成付款订单,然后再付款,其中的消息传输事件无法同时进行,也无法更改顺序。而无序事件则不必依赖其它事件而执行。
对于有序事件,所述步骤S150按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输还可以包括如下步骤:在同一事件类型下,将消息传输事件的属性为有序事件的消息传输事件按创建时间排序;在同一事件类型下,自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输。所述排序顺序按所述创建时间由早及近进行排序。
具体而言,所述消息传输事件的属性为有序事件的消息传输事件可以直接按创建时间排序,也可以按自增id排序(相当于按创建时间排序),本发明并非以此为限。通过对有序事件的排序,从而按顺序进行重新传输可以避免同一事件类型下消息传输逻辑产生错误。
具体而言,在自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输时,若任一消息传输事件重新传输失败,则不在对该重新传输失败消息传输事件之后的消息传输事件进行重新传输,并自该重新传输失败消息传输事件开始按所述排序顺序将所述消息传输事件更新为同一补偿状态。例如,该重新传输失败消息传输事件传输失败后,补偿状态可以更改为执行失败(例如超过最大重新传输次数)、待执行(等待后序批次的重新传输)、取消执行(例如经由人工设定取消执行),则按所述排序顺序,该重新传输失败消息传输事件之后的各所述消息传输事件与该重新传输失败消息传输事件的执行状态保持一致。由此,提高整个事件补偿表重新传输的效率。
对于无序事件,所述步骤S150按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:在同一事件类型下,同时对消息传输事件的属性为无序事件的消息传输事件重新传输。由于无序事件之间没有依赖关系,因此,无序事件的重新传输并行执行,由此提高整个事件补偿表重新传输的效率。
进一步地,对于同一事件类型下既包括有序事件又包括无序事件的实施例中,可以使有序事件的重新传输与无序时间的重新传输并行执行,本发明并非以此为限制。
在本发明的一些实施例中,所述步骤S150按所述分组,对所获取的消息传输事件进行重新传输之前还可以包括如下步骤:将所获取的消息传输事件的事件锁定状态设置为锁定,其中,在所述消息传输事件重新传输成功后,所述消息传输事件的事件锁定状态更新为解锁,事件锁定状态为锁定的消息传输事件仅可由一个设备进行重新传输。由此,实现单个事件的分布式锁。
在本发明的一些实施例中,所述步骤S140利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件可以包括如下步骤:利用所述分布式锁标记所述事件补偿表中同一事件类型的消息传输事件的数量,其中,该事件类型下的消息传输事件重新传输成功后,使所述分布式锁标记的数量减一,所述分布式锁标记的数量不为0时,该事件类型的数据仅能被所述重新传输的线程调用,当该事件类型下所述分布式锁标记的数量为0时,使该类型事件解锁。由此,可以实现事件类型的分布式锁,考虑到不同事件类型之间也可能存在依赖关系,或者后序数据分析系统需要获取各事件类型的数据,通过事件类型的分布式锁,避免多个系统对分布式系统中事件类型同时操作导致系统出错或数据出错的情况。
在本发明的一些实施例中,各所述消息传输事件设置有消息重传映射表,所述消息重传映射表储存有消息传输事件的重新传输次数与下次重新传输时间的对应关系,所述消息重传映射表还提供消息传输事件的最大重新传输次数,所述消息传输事件的补偿状态还根据所述消息重传映射表更新重新传输次数(或剩余传输次数)及下一次重新传输时间。在一个具体实施例中,消息重传映射表为:重新传输次数为1,下次重新传输时间为10秒(自创建时间至第一次重新传输的时间间隔);重新传输次数为2,下次重新传输时间为1分钟(自第一次重新传输时间至第二次重新传输的时间间隔);重新传输次数为3,下次重新传输时间为5分钟(自第二次重新传输时间至第三次重新传输的时间间隔,以此类推);重新传输次数为4,下次重新传输时间为10分钟;重新传输次数为5,下次重新传输时间为30分钟;重新传输次数为6,下次重新传输时间为2小时;重新传输次数为7,下次重新传输时间为6小时;重新传输次数为8,下次重新传输时间为15小时(最大重新传输次数为8小时)。各重新传输次数的下次重新传输时间也可以表示为自创建时间至该次重新传输的时间间隔。各消息传输事件可以设置有相同的消息重传映射表,以进行统一管理。在一些变化例中,各消息传输事件可以设置有不同的消息重传映射表,以根据不同的事件进行灵活配置。本发明并非以次为限制。
在本发明的各个实施例中,消息重新传输由中间件执行。在本发明的各个实施例中,所述事件补偿表可以经由人工修改手动清除不需要补偿的事件,也可以增加需要补偿的事件。本发明并非以为限制。
图3示出了根据本发明实施例的中间件消息传输补偿装置的模块图。所述中间件用于执行消息传输事件。中间件消息传输补偿装置300包括获取模块310、储存模块320、标记模块330、重传模块340及更新模块350。
所述消息传输失败时,获取模块310用于获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;
储存模块320用于使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;
标记模块330用于利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;
重传模块340用于按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;
更新模块350用于根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
在本发明提供的中间件消息传输补偿装置中,采用自动执行的方式,执行事件补偿表的补偿操作,进行事件的重新发送,同时利用分布式锁进行并发控制,支持分布式执行补偿。此外,考虑到事件产生具有时序性,还可以对于时间顺序,补偿次数等等,做到严格与实时的控制。保证系统更高效精准的运行,提高数据的传递效率与准确性。
图3仅仅是示意性的示出本发明提供的中间件消息传输补偿装置300,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。本发明提供的中间件消息传输补偿装置300可以由软件、硬件、固件、插件及他们之间的任意组合来实现,本发明并非以此为限。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述中间件消息传输补偿方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述中间件消息传输补偿方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图4所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本发明的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述中间件消息传输补偿方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图5来描述根据本发明的这种实施方式的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:至少一个处理单元510、至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530、显示单元540等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书上述中间件消息传输补偿方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图1至图3所示的步骤。
所述存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
所述存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器560可以通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明实施方式的上述中间件消息传输补偿方法。
相比现有技术,本发明的优势在于:
本发明采用自动执行的方式,执行事件补偿表的补偿操作,进行事件的重新发送,同时利用分布式锁进行并发控制,支持分布式执行补偿。此外,考虑到事件产生具有时序性,还可以对于时间顺序,补偿次数等等,做到严格与实时的控制。保证系统更高效精准的运行,提高数据的传递效率与准确性。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
Claims (13)
1.一种中间件消息传输补偿方法,其特征在于,包括:
所述中间件执行消息传输事件;
所述消息传输失败时,获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;
使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;
利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;
按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;
根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
2.如权利要求1所述的中间件消息传输补偿方法,其特征在于,所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
按预定数量获取所述事件补偿表中补偿状态为待执行的消息传输事件;
将所获取的消息传输时间的补偿状态更改为执行中;
按所述事件类型,对所获取的消息传输事件进行分组;以及
按所述分组,对所获取的消息传输事件进行重新传输。
3.如权利要求2所述的中间件消息传输补偿方法,其特征在于,所述按预定数量获取所述事件补偿表中补偿状态为待执行的消息传输事件之后,还包括:
向所获取的消息传输事件分配批次标识,所述批次标识用于区分不同批次的消息传输时间的重新传输。
4.如权利要求2所述的中间件消息传输补偿方法,其特征在于,
所述消息传输事件的参数还包括消息传输事件的属性,所述消息传输事件的属性包括有序事件和无序事件,
所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
在同一事件类型下,将消息传输事件的属性为有序事件的消息传输事件按创建时间排序;
在同一事件类型下,自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输。
5.如权利要求4所述的中间件消息传输补偿方法,其特征在于,在自创建时间最早的消息传输事件开始按所述排序顺序进行重新传输时,若任一消息传输事件重新传输失败,则不在对该重新传输失败消息传输事件之后的消息传输事件进行重新传输,并自该重新传输失败消息传输事件开始按所述排序顺序将所述消息传输事件更新为同一补偿状态。
6.如权利要求4所述的中间件消息传输补偿方法,其特征在于,所述按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输包括:
在同一事件类型下,同时对消息传输事件的属性为无序事件的消息传输事件重新传输。
7.如权利要求2所述的中间件消息传输补偿方法,其特征在于,所述按所述分组,对所获取的消息传输事件进行重新传输之前还包括:
将所获取的消息传输事件的事件锁定状态设置为锁定,其中,在所述消息传输事件重新传输成功后,所述消息传输事件的事件锁定状态更新为解锁,事件锁定状态为锁定的消息传输事件仅可由一个设备进行重新传输。
8.如权利要求1至7任一项所述的中间件消息传输补偿方法,其特征在于,所述利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件包括:
利用所述分布式锁标记所述事件补偿表中同一事件类型的消息传输事件的数量,其中,
该事件类型下的消息传输事件重新传输成功后,使所述分布式锁标记的数量减一;
所述分布式锁标记的数量不为0时,该事件类型的数据仅能被所述重新传输的线程调用,当该事件类型下所述分布式锁标记的数量为0时,使该类型事件解锁。
9.如权利要求1至7任一项所述的中间件消息传输补偿方法,其特征在于,各所述消息传输事件设置有消息重传映射表,所述消息重传映射表储存有消息传输事件的重新传输次数与下次重新传输时间的对应关系,所述消息重传映射表还提供消息传输事件的最大重新传输次数,所述消息传输事件的补偿状态还根据所述消息重传映射表更新。
10.如权利要求1至7任一项所述的中间件消息传输补偿方法,其特征在于,所述中间件执行消息传输事件时,查询与该消息传输时间属于同一事件类型的前一消息传输时间是否储存于所述事件补偿表中,若是,则获取当前消息传输事件的参数,并关联待执行的所述补偿状态储存至所述事件补偿表中。
11.一种中间件消息传输补偿装置,所述中间件用于执行消息传输事件,其特征在于,包括:
获取模块,所述消息传输失败时,用于获取所述消息传输事件的参数,所述消息传输事件的参数至少包括事件类型;
储存模块,用于使所述消息传输事件的补偿状态为待执行,将所述补偿状态关联所述消息传输事件的参数存入一事件补偿表中;
标记模块,用于利用分布式锁于所述事件补偿表中标记同一事件类型的消息传输事件;
重传模块,用于按所述事件类型,对所述事件补偿表中的消息传输事件进行重新传输;以及
更新模块,用于根据所述重新传输的结果更新所述消息传输事件的补偿状态及所述分布式锁。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如权利要求1至10任一项所述的步骤。
13.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至10任一项所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910216637.7A CN109951261B (zh) | 2019-03-20 | 2019-03-20 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910216637.7A CN109951261B (zh) | 2019-03-20 | 2019-03-20 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109951261A true CN109951261A (zh) | 2019-06-28 |
CN109951261B CN109951261B (zh) | 2021-09-28 |
Family
ID=67010447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910216637.7A Active CN109951261B (zh) | 2019-03-20 | 2019-03-20 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109951261B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134525A (zh) * | 2019-03-25 | 2019-08-16 | 杭州比智科技有限公司 | 一种消息补偿方法及装置 |
CN110740062A (zh) * | 2019-10-24 | 2020-01-31 | 泰康保险集团股份有限公司 | 断点续传方法和装置 |
CN111027809A (zh) * | 2019-11-13 | 2020-04-17 | 泰康保险集团股份有限公司 | 消息通知方法、装置、介质及电子设备 |
CN111080250A (zh) * | 2019-12-10 | 2020-04-28 | 东软集团股份有限公司 | 流程回退补偿方法、装置、存储介质及电子设备 |
CN113486029A (zh) * | 2021-06-28 | 2021-10-08 | 上海万物新生环保科技集团有限公司 | 一种服务降级的数据补偿方法、系统及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030078958A1 (en) * | 2000-09-01 | 2003-04-24 | Pace Charles P. | Method and system for deploying an asset over a multi-tiered network |
CN1829139A (zh) * | 2006-03-30 | 2006-09-06 | 阿里巴巴公司 | 一种消息重发方法和系统 |
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN102143198A (zh) * | 2010-09-30 | 2011-08-03 | 华为技术有限公司 | 消息传送方法、装置和系统 |
US20120027010A1 (en) * | 2002-06-20 | 2012-02-02 | Harvey Alexander Elliot | Alarm system ip network with pstn output |
CN104348874A (zh) * | 2013-08-06 | 2015-02-11 | 中国电信股份有限公司 | 云平台组件之间消息传输的方法与装置 |
CN104731912A (zh) * | 2015-03-24 | 2015-06-24 | 浪潮集团有限公司 | 一种消息中间件mq的消息传输方法和装置 |
CN106921619A (zh) * | 2015-12-24 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 一种关联事件处理方法及装置 |
CN107368359A (zh) * | 2017-05-31 | 2017-11-21 | 杭州大搜车汽车服务有限公司 | 一种异步任务执行方法及其存储介质、装置 |
CN108881278A (zh) * | 2018-07-10 | 2018-11-23 | 江苏满运软件科技有限公司 | 风险评估方法及系统 |
-
2019
- 2019-03-20 CN CN201910216637.7A patent/CN109951261B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030078958A1 (en) * | 2000-09-01 | 2003-04-24 | Pace Charles P. | Method and system for deploying an asset over a multi-tiered network |
US20120027010A1 (en) * | 2002-06-20 | 2012-02-02 | Harvey Alexander Elliot | Alarm system ip network with pstn output |
CN1829139A (zh) * | 2006-03-30 | 2006-09-06 | 阿里巴巴公司 | 一种消息重发方法和系统 |
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN102143198A (zh) * | 2010-09-30 | 2011-08-03 | 华为技术有限公司 | 消息传送方法、装置和系统 |
CN104348874A (zh) * | 2013-08-06 | 2015-02-11 | 中国电信股份有限公司 | 云平台组件之间消息传输的方法与装置 |
CN104731912A (zh) * | 2015-03-24 | 2015-06-24 | 浪潮集团有限公司 | 一种消息中间件mq的消息传输方法和装置 |
CN106921619A (zh) * | 2015-12-24 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 一种关联事件处理方法及装置 |
CN107368359A (zh) * | 2017-05-31 | 2017-11-21 | 杭州大搜车汽车服务有限公司 | 一种异步任务执行方法及其存储介质、装置 |
CN108881278A (zh) * | 2018-07-10 | 2018-11-23 | 江苏满运软件科技有限公司 | 风险评估方法及系统 |
Non-Patent Citations (3)
Title |
---|
CARLOS MOLINA-JIMENEZ: "Implementing Business Conversations with Consistency Guarantees Using Message-Oriented Middleware", 《IEEE》 * |
杨志豪: "私有云环境下通信平台设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
邵华平: "基于消息中间件的三层分布式铁路牵引供电信息系统", 《昆明理工大学学报(理工版)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134525A (zh) * | 2019-03-25 | 2019-08-16 | 杭州比智科技有限公司 | 一种消息补偿方法及装置 |
CN110740062A (zh) * | 2019-10-24 | 2020-01-31 | 泰康保险集团股份有限公司 | 断点续传方法和装置 |
CN111027809A (zh) * | 2019-11-13 | 2020-04-17 | 泰康保险集团股份有限公司 | 消息通知方法、装置、介质及电子设备 |
CN111027809B (zh) * | 2019-11-13 | 2022-07-05 | 泰康保险集团股份有限公司 | 消息通知方法、装置、介质及电子设备 |
CN111080250A (zh) * | 2019-12-10 | 2020-04-28 | 东软集团股份有限公司 | 流程回退补偿方法、装置、存储介质及电子设备 |
CN111080250B (zh) * | 2019-12-10 | 2023-04-18 | 东软集团股份有限公司 | 流程回退补偿方法、装置、存储介质及电子设备 |
CN113486029A (zh) * | 2021-06-28 | 2021-10-08 | 上海万物新生环保科技集团有限公司 | 一种服务降级的数据补偿方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109951261B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951261A (zh) | 中间件消息传输补偿方法、装置、电子设备、存储介质 | |
CN108228814B (zh) | 数据同步方法及装置 | |
US7421546B2 (en) | Intelligent state engine system | |
CN110119294A (zh) | 菜单页面的生成方法、装置及系统 | |
CN110619555A (zh) | 订单信息的统一管理方法、装置、终端设备及介质 | |
CN104462304A (zh) | 一种信息处理方法和装置 | |
US11693371B2 (en) | Potential replacement algorithm selection based on algorithm execution context information | |
CN110348771A (zh) | 一种对订单进行组单的方法和装置 | |
CN108984197A (zh) | 一种代码更新方法和装置 | |
CN109285586A (zh) | 化学试剂库存管理方法、电子设备及计算机可读存储介质 | |
CN110490523A (zh) | 备料清单的生成方法、装置和电子设备 | |
CN109669787A (zh) | 数据传输方法及装置、存储介质、电子设备 | |
CN109814957A (zh) | 一种用于ios系统的标签添加方法和装置 | |
CN108711025A (zh) | 租车车辆库存查询方法、装置、电子设备、存储介质 | |
WO2023015916A1 (zh) | 一种立体分拣方法、立体分拣机器人和系统 | |
WO2022143297A1 (zh) | 用于发送信息的方法和装置 | |
CN113233069B (zh) | 智能仓储出库控制方法、装置、电子设备、及存储介质 | |
CN109284452A (zh) | 电子协议在线展示方法、装置、电子设备、存储介质 | |
CN113076186B (zh) | 任务处理的方法、装置、电子设备和存储介质 | |
CN109784805A (zh) | 收货管理方法、装置、设备和存储介质 | |
CN109299173A (zh) | 数据传输方法、装置及存储介质 | |
CN110389976A (zh) | 一种多接口数据的调度方法和装置 | |
CN108959294A (zh) | 一种访问搜索引擎的方法和装置 | |
CN111045928A (zh) | 一种接口数据测试方法、装置、终端及存储介质 | |
CN104462175B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20190628 Assignee: Nanjing Manyun Cold Chain Technology Co.,Ltd. Assignor: JIANGSU MANYUN SOFTWARE TECHNOLOGY Co.,Ltd. Contract record no.: X2023980038397 Denomination of invention: Middleware message transmission compensation method, device, electronic device, storage medium Granted publication date: 20210928 License type: Common License Record date: 20230724 |