消息处理方法、设备及系统与流程

文档序号:11829128阅读:141来源:国知局
消息处理方法、设备及系统与流程

本申请涉及通信技术领域,尤其涉及一种消息处理方法、设备及系统。



背景技术:

在大型分布式应用中,消息中间件作为异步/解耦的方案已经成为整个分布式体系中不可或缺的一环。然而,在消息处理过程中,不可避免的需要考虑到业务操作和发送消息的一致性:即不能没做业务操作就发消息;不能做了业务操作但没发消息;不能业务操作只做了一部分,就发消息。通常业务操作包涵应用本地数据库的数据变更,而发消息是应用到消息队列的一次远程通信,这两者是完全独立的。

一般地,针对在消息发送的过程中,将本地数据库事务及消息队列的通信视为一体,同时成功同时失败的问题,包括以下几种方案:

(1)将数据库、消息队列等抽象成资源,并引入事务管理器来管理资源,最后通过两阶段提交协议在全局事务中协调多个资源的事务,以此做到消息发送的一致性。

(2)在消息发送一致性问题上不强调实时一致性,假设业务在处理过程中就会随机出现问题,并暂时容忍这种问题带来的短暂不一致,通过补偿回查的方式,查找遗漏处理的消息,并通过调用应用系统提供的业务检查接口,判断遗漏消息的处理结果,以此保证消息处理与事务操作的一致性。

上述第一种方案引入了分布式事务,会带来一些性能开销并增加系统复杂性;同时对业务系统侵入较大,在不需要事务处理与消息发送实时一致性的情况下,过于复杂。第二种方案通过消息回查机制确实能达到最终一致性,但在回查上比较繁琐,要求应用系统编写检查业务操作是否成功的代码。若应用系统发消息的业务节点非常多,那么需要编写回查的业务 代码量将直线上升。



技术实现要素:

基于此,有必要针对上述消息发送的一致性的问题提供一种消息处理方法、设备及系统。

有鉴于此,本申请提供一种应用设备的消息处理方法,该方法包括如下步骤:

根据事务操作,生成对应的消息及所述消息的标识信息;

向对应的消息设备发送所述消息及所述标识信息;

执行所述事务操作,并将所述标识信息保存至对应的标识信息数据库,其中,仅当所述事务操作被执行完毕时,所述标识信息存在于所述标识信息数据库。

进一步的,所述消息处于待处理状态。

进一步的,该方法还包括:

当执行完毕所述事务操作,向所述消息设备发送关于所述消息的消息处理指令。

进一步的,将所述标识信息保存至所述标识信息数据库的操作与所述事务操作属于同一个原子操作。

进一步的,所述将所述标识信息保存至对应的标识信息数据库包括:

当执行完毕所述事务操作,将所述标识信息保存至对应的标识信息数据库。

对应地,本申请还提供一种消息设备的消息处理方法,其中,该方法包括:

接收对应的应用设备发送的消息及所述消息的标识信息;

根据所述消息更新对应的待处理消息集合;

根据所述待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询;

根据对应的查询结果处理所述待处理消息。

进一步的,所述根据所述消息更新对应的待处理消息集合包括:

将所述消息设置为待处理状态,并将所述消息添加至对应的待处理消息集合。

进一步的,该方法还包括:

接收所述应用设备发送的消息处理指令;

根据所述消息处理指令对对应消息进行处理;

根据处理后的所述对应消息更新所述待处理消息集合。

进一步的,所述根据所述待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询包括:

当所述待处理消息集合中待处理消息的存续时长超过预定的处理时长阈值,根据所述待处理信息的标识信息在对应的标识信息数据库进行查询。

进一步的,该方法还包括:

根据待处理消息在所述待处理消息集合中的存续时长信息确定所述处理时长阈值。

进一步的,所述根据对应的查询结果处理所述待处理消息包括:

若对应的查询结果非空,提交所述待处理消息;若所述查询结果为空,删除所述待处理消息;

根据相应的处理结果更新所述待处理消息集合。

本申请还提供一种用于消息处理的应用设备,其中,该设备包括:

第一装置,用于根据事务操作,生成对应的消息及所述消息的标识信息;

第三装置,用于向对应的消息设备发送所述消息及所述标识信息;

第五装置,用于执行所述事务操作,并将所述标识信息保存至对应的标识信息数据库,其中,仅当所述事务操作被执行完毕时,所述标识信息存在于所述标识信息数据库。

进一步地,所述消息处于待处理状态。

进一步地,该设备还包括:

第七装置,用于当执行完毕所述事务操作,向所述消息设备发送关于所述消息的消息处理指令。

进一步地,将所述标识信息保存至所述标识信息数据库的操作与所述事务操作属于同一个原子操作。

进一步地,所述将所述标识信息保存至对应的标识信息数据库包括:

当执行完毕所述事务操作,将所述标识信息保存至对应的标识信息数据库。

对应地,本申请提供一种用于消息处理的消息设备,其中,该设备包括:

第二装置,用于接收对应的应用设备发送的消息及所述消息的标识信息;

第四装置,用于根据所述消息更新对应的待处理消息集合;

第六装置,用于根据所述待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询;

第八装置,用于根据对应的查询结果处理所述待处理消息。

进一步地,所述第四装置,用于将所述消息设置为待处理状态,并将所述消息添加至对应的待处理消息集合。

进一步地,该设备还包括:

第十装置,用于接收所述应用设备发送的消息处理指令;

第十二装置,用于根据所述消息处理指令对对应消息进行处理;

第十四装置,用于根据处理后的所述对应消息更新所述待处理消息集合。

进一步地,所述第六装置,用于当所述待处理消息集合中待处理消息的存续时长超过预定的处理时长阈值,根据所述待处理信息的标识信息在对应的标识信息数据库进行查询。

进一步地,该设备还包括:

第十六装置,用于根据待处理消息在所述待处理消息集合中的存续时长信息确定所述处理时长阈值。

进一步地,所述第八装置用于:

若对应的查询结果非空,提交所述待处理消息;若所述查询结果为空,删除所述待处理消息;

根据相应的处理结果更新所述待处理消息集合。

本申请还提供一种消息处理系统,该系统包括前述的应用设备和前述的消息设备。

与现有技术相比,本申请所述的消息处理方法及设备,通过在事务操作时,为消息设置标识信息,并将消息及其标识消息从应用设备传输至消 息设备。同时执行所述事务操作,将所述标识信息保存至对应的标识信息数据库,其中,仅当所述事务操作被执行完毕时,所述标识信息存在于所述标识信息数据库。从而可得出,只有执行成功的事务,其对应的数据库中才存在消息的标识信息,在消息设备回查遗漏处理的消息的处理情况时,只需要查询应用设备的标识信息数据库中是否存在对应的标识信息,即可确保消息发送与事务处理的一致性。本申请的消息处理系统包括前述应用设备及消息设备,通过增加一个消息的标识信息的概念,将消息及事务统一起来,很完美地解决了消息发送最终一致性的问题。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本申请用于消息处理的应用设备一实施例的原理框图;

图2为本申请用于消息处理的消息设备一实施例的原理框图;

图3为本申请消息处理系统一实施例的原理框图;

图4为本申请应用设备消息处理方法一实施例的流程图;

图5为本申请消息设备消息处理方法一实施例的流程图;

图6为本申请消息设备消息处理方法又一实施例的流程图;

图7为本申请消息处理方法一实施例的流程图;

图8为本申请消息处理方法又一实施例的流程图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本申请的技术方案,进行清楚和完整的描述。

本申请的消息处理系统1,通过应用设备2将事务操作时生成的消息及该消息的标识信息发送至消息设备3,同时应用设备2事务操作完成时,标识信息便存在于标识信息数据库4中。消息设备3接收应用设备2发送的消息及该消息的标识信息,放置在待处理消息集合中,根据待处理消息的标识信息,查询对应的标识信息数据库4是否存在该标识信息,根据查询结果对待处理消息进行处理。

如图1所示,本申请提供一种用于消息处理的应用设备2,该设备包括:

第一装置21,用于根据事务操作,生成对应的消息及消息的标识信息。

第三装置22,用于向对应的消息设备3发送消息及标识信息。

第五装置23,用于执行事务操作,并将标识信息保存至对应的标识信息数据库4,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库4。

在该实施例中,应用设备2通过第一装置21生成与事务操作对应的消息及消息的标识信息,此处消息的标识信息与消息唯一对应。消息及消息标识的生成时间可以为事务开始时,也可以为事务请求时,或者其它合适的时间,具体时间不做限制。消息及消息的标识信息的生成顺序也不做限定。第三装 置22向对应的消息设备3发送消息及标识信息时,可将消息的标识信息设置到消息的消息实体内,与消息一起发送至消息设备3,如此确保消息与其标识信息的唯一对应。第五装置23将标识信息保存至对应的标识信息数据库4的操作,可以与事务操作属于同一个原子操作,也可以是在确保事务操作完成的情况下的独立操作。只要保证在事务操作成功时,标识信息存在于标识信息数据库4即可。另外,标识信息数据库4用于存储标识信息,其可以设置在应用设备2内,也可以设置应用设备2外。该标识信息数据库4也可以通过应用设备2建立的用于存储标识信息的表实现。

在其中一个实施例中,消息处于待处理状态。

在该实施例中,事务操作未结束前,应用设备2针对该事务操作生成的消息应处于待处理状态。此状态可通过应用设备2的动作实现,也可通过消息设备3的动作来实现。应用设备实现的方式一般包括:在将消息发送给消息设备3前,添加消息设备3可识别的消息处于待处理状态的标记,并将携带此标记的消息发送至消息设备3;在将消息发送给消息设备3后,向消息设备3发送消息处于待处理状态的指令,消息设备3通过该指令将此消息设置为待处理状态。在第二种实现方式中,应用设备2可将消息、消息的标识信息以及消息处于带出来状态的指令同时发送至消息设备3,当然也可分开发送,但是确保发送的时效性,例如,需要确保在事务操作未结束前,将该事务操作对应的消息应处于待处理状态的指令发送至消息设备3中。

在其中一个实施例中,该设备还包括:第七装置24,用于当执行完毕事务操作,向消息设备3发送关于消息的消息处理指令。

在该实施例中,当事务操作完毕,应用设备的第七装置24根据该事务的操作结果,向消息设备3发送关于该事务操作对应的消息处理指令。若事务操作成功,向消息设备3发送消息提交指令;若事务操作失败,则向消息设备3发送消息删除(回滚)指令。由于消息设备3可能会同时处理多个事务操作的消息,为确保应用设备2将事务操作结果所对应的消息处理指令发送至消息设备3时,能够准确的对应到该事务操作的消息,此时,消息处理指令可携带该消息的标识信息,该标识信息不仅与事务操作中的消息唯一对应,还需要携带消息设备3可识别的事务识别信息,即消息设备3接收到事务操 作结果的指令时,能够根据指令中的标识信息,对应至消息设备3中某个事务的某条消息,进一步根据指令内容对该消息进行处理。另外,本申请中应用设备2发送的消息指令,如何准确地对应至消息设备3中的消息的实现方法不做具体限制,消息设备3可具有与应用设备2配合实现的消息管理机制,只要能够实现上述对应即可。

在其中一个实施例中,将标识信息保存至标识信息数据库4的操作与事务操作属于同一个原子操作。

在该实施例中,原子操作具有不可分割性,在执行完毕之前不会被任何其它事务或任务中断,并且,同一个原子操作中的所有操作全部成功时,该原子操作才成功;其中的操作只要有一个失败,该原子操作也失败。将标识信息保存至标识信息数据库4的操作与事务操作属于同一个原子操作,如此,便实现了事务操作成功与标识信息存在于标识信息数据库4的一致性。进一步,可通过检查消息的标识信息是否存在于标识信息数据库4,判断该消息对应的事务操作是否完成,不需要调用应用设备2的事务操作检查接口进行一一查询,便可实现事务操作与消息发送的一致性,并且这样更简单、方便。

在其中一个实施例中,将标识信息保存至对应的标识信息数据库4包括:当执行完毕事务操作,将标识信息保存至对应的标识信息数据库4。

在该实施例中,将标识信息保存至对应的标识信息数据库4,为应用设备2在事务操作完成后进行的独立动作。具体可通过如下方式实现:应用设备2检查到事务操作完成,便将该事务对应消息的标识信息保存至标识信息数据库4中;事务操作完成后,向应用设备2发送事务操作完成的提醒,应用设备2根据该提醒,将该事务对应消息的标识信息保存至标识信息数据库4中。以实现通过检查消息的标识信息是否存在于标识信息数据库4,判断该消息对应的事务操作是否完成。本方案不需要调用应用设备2的事务操作检查接口进行一一查询,便可实现事务操作与消息发送的一致性。

如图2所示,对应地,本申请提供一种用于消息处理的消息设备3,该设备包括:

第二装置31,用于接收对应的应用设备2发送的消息及消息的标识信息。

第四装置32,用于根据消息更新对应的待处理消息集合。

第六装置33,用于根据待处理消息集合中待处理消息的标识信息在对应的标识信息数据库4进行查询。

第八装置34,用于根据对应的查询结果处理待处理消息。

在该实施例中,第二装置31接收对应应用设备2发送的消息及消息的标识信息时,若消息的标识信息未设置在消息实体中,消息设备3应将消息与消息的标识信息进行捆绑,使其一一对应,并与消息设备3中的其它消息相区别;若消息的标识信息设置在消息实体中,消息设备3接收后,使其与其它消息相区别。例如,消息设备3可通过将接收到的消息进行事务区分标记及事务内消息区分标记两层标记,以实现消息设备3内部消息的相互区分。第四装置32根据消息更新对应的待处理消息集合时,需要根据自己的管理机制,将上述接收到的消息放入待处理消息集合,此处的消息集合也可理解为消息队列。第六装置33根据待处理消息集合中待处理消息的标识信息,在对应的标识信息数据库4进行查询时,首先需要判断待处理消息中需要查询的消息的标识信息,其次查询标识信息数据库4中是否存在该需要查询的消息的标识信息。具体地,需要查询的消息,可通过消息设备3根据不同事务的具体情况预设相应的条件进行判断决定,或者借助消息设备3的管理机制判断决定。第八装置34根据对应的查询结果处理待处理消息时,具体地,是根据在标识信息数据库4中是否查询到需要查询的消息的标识信息,进一步对该消息进行提交和删除处理。

在其中一个实施例中,第四装置32用于将消息设置为待处理状态,并将消息添加至对应的待处理消息集合。

在该实施例中,消息设备的第四装置32将第二装置31接收到的消息设置为待处理状态的具体实现方式不做限制,可通过具体标记符实现,也可通过放置在不同的队列集合中实现。例如,消息设备3接收到消息后,将其标记为处于half状态,也即处于待处理(提交)状态,在消息设备3未接收到该消息的处理指令前,该消息一直处于half状态。或者,通过将消息进行分类、分区域放置等实现,第四装置32直接将第二装置31接收到的消息放置在待处理消息队列集合,默认接收到的消息均为待处理消息。将消息添加至对应的待处理消息集合中,以等待后续处理。

如图2所示,在其中一个实施例中,消息设备3还包括:

第十装置35,用于接收应用设备2发送的消息处理指令。

第十二装置36,用于根据消息处理指令对对应消息进行处理。

第十四装置37,用于根据处理后的对应消息更新待处理消息集合。

在该实施例中,事务操作完毕后,消息设备的第十装置35接收应用设备第七装置24发送的消息处理指令,该指令需要携带对应至消息设备3中待处理消息的相关信息,具体地,可通过该指令携带的对应待处理消息的标识信息实现。因该标识信息不仅与事务操作中的消息唯一对应,还携带消息设备3可识别的事务识别信息,即消息设备3接收到事务操作结果的指令时,能够根据指令中的标识信息,对应至消息设备3中某个事务的某条待处理消息。本领域的技术人员应当能够认识到,将消息处理指令对应至消息设备3待处理消息的实现方式是不限制的,应用设备2与消息设备3之间的满足要求的信息交互机制均可。第十装置35接收到消息处理指令后,第十二装置36便根据该指令携带的对应至消息设备3中待处理消息的相关信息,对该待处理消息进行处理。若指令内容为消息提交,则第十二装置36对对应的消息进行提交;若指令内容为消息删除(回滚),则第十二装置36对对应的消息进行删除。此时消息中的标识信息随着消息的提交/删除而被清除。第十四装置37将处理过的消息所存在的消息集合进行更新,消息处理后,其存储资源释放,消息集合进行更新。

在其中一个实施例中,第六装置33用于当待处理消息集合中待处理消息的存续时长超过预定的处理时长阈值,根据待处理信息的标识信息在对应的标识信息数据库4进行查询。

在该实施例中,消息设备3的管理机制,可根据不同事务的属性特点,对该事务操作对应的消息,预设处于待处理状态的时间阈值。第六装置33在对应的标识信息数据库4查询的前提条件为:第一,存在满足条件的待处理消息;第二,获取该待处理消息的标识信息。所谓满足条件的待处理消息,根据其以待处理状态存在于消息集合中的时长确定,超过预设时间阈值的,便被列为待查询对象。如果消息的标识信息与消息实体绑定在一起,直接读取其标识信息便可;否则,需要根据消息调取其标识信息。具体的查询顺序 不在限制,可以查询时待处理消息处于待处理状态的时长进行,例如,处于待处理消息的状态时间最长的,最先对其进行查询;也可根据满足待查询条件的待处理消息在消息集合中的位置进行处理,例如,根据消息集合中从上至下/从左至右等的顺序进行处理等。本领域的技术人员应当能够认识到,设置上述处理顺序的具体方式并不做限制,实现满足待查询条件的消息被有序的处理即可。

另外,消息设备3也可将待处理消息进行分类放置,例如,当消息设备3接收到消息时放入第一待处理消息集合中,当第一待处理消息集合中的消息满足上述阈值条件时,便自动转存至第二待处理消息集合中,此时,第六装置33只需根据第二待处理消息集合中消息的标识信息,在对应的标识信息数据库4进行查询。

在其中一个实施例中,消息设备3还包括:第十六装置38,用于根据待处理消息在待处理消息集合中的存续时长信息确定处理时长阈值。

在该实施例中,消息设备的第十六装置38,根据待处理消息在待处理消息集合中的存续时长信息确定处理时长阈值时,具体可根据不同事务的属性特点,对该事务操作对应的消息,预设处于待处理状态的时间阈值。例如,针对操作时间比较长的事务,可设置较大的时间阈值;针对操作时间比较短的事务,可设置较小的时间阈值。阈值的大小根据具体情况确定。不宜太大,以避免查询启动过于滞后于事务操作;也不宜太小,以避免查询启动过早事务操作还未结束;前述两种情况都容易产生事务操作与消息发送的最终不一致性。

在其中一个实施例中,第八装置34根据第六装置33的查询结果,对对应消息进行如下处理:若对应的查询结果非空,提交待处理消息;若查询结果为空,删除待处理消息。根据相应的处理结果更新待处理消息集合。

在该实施例中,因只有当事务操作完成时标识信息才存在于标识信息数据库4中,故当第八装置34在标识信息数据库4中查询到与待处理消息的标识信息同样的标识信息时,表明该事务操作已经完成,而此时该事务对应的消息在消息设备3中还处于待处理状态,事务操作与消息发送产生了不一致,此时第八装置34提交该事务操作对应的消息,实现了事务操作与消息发送的 最终一致性。同样地,因只有当事务操作完成时标识信息才存在于标识信息数据库4中,故当第八装置34在标识信息数据库4中未查询到与待处理消息的标识信息同样的标识信息时,表明该事务操作失败,而此时该事务对应的消息在消息设备3中还处于待处理状态,事务操作与消息发送产生了不一致,此时第八装置34删除(回滚)该事务操作对应的消息,实现了事务操作与消息发送的最终一致性。

另外,在该实施例中,消息处理后,其存储资源释放,第八装置34对消息集合进行更新。具体更新方式,可以为左右/上下的待处理消息进行顺序填补,也可以为将接收到的新的消息进行填补等。

如图3所示,本申请还提供一种消息处理系统1,该系统包括应用设备2、消息设备3及标识信息数据库4。其中,标识信息数据库4可设置在应用设备2或者消息设备3中,也可独立设置。

在该实施例中,本申请的消息处理系统1,通过应用设备2将事务操作时生成的消息及该消息的标识信息发送至消息设备3,同时应用设备2事务操作完成时,标识信息便存在于标识信息数据库4中。消息设备3接收应用设备2发送的消息及该消息的标识信息,放置在待处理消息集合中,根据待处理消息的标识信息,查询对应的标识信息数据库4是否存在该标识信息,根据查询结果对待处理消息进行处理。

与现有技术相比,本申请的消息处理系统1,通过在事务操作时,为消息设置标识信息,并将消息及其标识消息从应用设备2传输至消息设备3。同时执行事务操作,将标识信息保存至对应的标识信息数据库4,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库4。从而可得出,只有执行成功的事务,其对应的数据库中才存在消息的标识信息,在消息设备3回查遗漏处理的消息的处理情况时,只需要查询应用设备2的标识信息数据库4中是否存在对应的标识信息,即可确保消息发送与事务处理的一致性。本申请的消息处理系统1包括前述应用设备2及消息设备3,通过增加一个消息的标识信息的概念,将消息及事务统一起来,很完美地解决了消息发送最终一致性的问题。同时本申请将标识信息存储至标识信息数据库的操作,定义为与对应的事务操作属于同一个原子操作,从而通过事务操作的一 致性,确保了事务操作与消息发送的最终一致性,更加完美地解决了事务操作与消息发送的一致性问题。

如图4所示,本申请还提供一种应用设备的消息处理方法,该方法包括如下步骤:

S21,根据事务操作,生成对应的消息及消息的标识信息。

S22,向对应的消息设备发送消息及标识信息。

S23,执行事务操作,并将标识信息保存至对应的标识信息数据库,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库。

在该实施例中,生成与事务操作对应的消息及消息的标识信息,此处消息的标识信息与消息唯一对应。消息及消息标识的生成时间可以为事务开始时,也可以为事务请求时,或者其它合适的时间,具体时间不做限制。消息及消息的标识信息的生成顺序也不做限定。向对应的消息设备发送消息及标识信息时,可将消息的标识信息设置到消息的消息实体内,与消息一起发送至消息设备,如此确保消息与其标识信息的唯一对应。将标识信息保存至对应的标识信息数据库的操作,可以与事务操作属于同一个原子操作,也可以是在确保事务操作完成的情况下的独立操作。只要保证在事务操作成功时,标识信息存在于标识信息数据库即可。另外,标识信息数据库用于存储标识信息,其可以设置在应用设备2内,也可以设置在应用设备2外。该标识信息数据库也可以通过应用设备2建立的用于存储标识信息的表实现。

在其中一个实施例中,消息处于待处理状态。

在该实施例中,事务操作未结束前,应用设备2针对该事务操作生成的消息应处于待处理状态。此状态可通过应用设备2的动作实现,也可通过消息设备的动作来实现。应用设备实现的方式一般包括:在将消息发送给消息设备前,添加消息设备可识别的消息处于待处理状态的标记,并将携带此标记的消息发送至消息设备;在将消息发送给消息设备后,向消息设备发送消息处于待处理状态的指令,消息设备通过该指令将此消息设置为待处理状态。在第二种实现方式中,应用设备2可将消息、消息的标识信息以及消息处于带出来状态的指令同时发送至消息设备,当然也可分开发送,但是确保发送的时效性,例如,需要确保在事务操作未结束前,将该事务操作对应的消息 应处于待处理状态的指令发送至消息设备中。

在其中一个实施例中,应用设备的消息处理方法还包括:当执行完毕事务操作,向消息设备发送关于消息的消息处理指令。

在该实施例中,当事务操作完毕,应用设备2根据该事务的操作结果,向消息设备发送关于该事务操作对应的消息处理指令。若事务操作成功,向消息设备发送消息提交指令;若事务操作失败,则向消息设备发送消息删除(回滚)指令。由于消息设备可能会同时处理多个事务操作的消息,为确保应用设备2将事务操作结果所对应的消息处理指令发送至消息设备时,能够准确的对应到该事务操作的消息,此时,消息处理指令可携带该消息的标识信息,该标识信息不仅与事务操作中的消息唯一对应,还需要携带消息设备可识别的事务识别信息,即消息设备接收到事务操作结果的指令时,能够根据指令中的标识信息,对应至消息设备中某个事务的某条消息,进一步根据指令内容对该消息进行处理。另外,本申请中应用设备2发送的消息指令,如何准确地对应至消息设备中的消息的实现方法不做具体限制,消息设备可具有与应用设备2配合实现的消息管理机制,只要能够实现上述对应即可。

在其中一个实施例中,将标识信息保存至标识信息数据库的操作与事务操作属于同一个原子操作。

在该实施例中,原子操作具有不可分割性,在执行完毕之前不会被任何其它事务或任务中断,并且,同一个原子操作中的所有操作全部成功时,该原子操作才成功;其中的操作只要有一个失败,该原子操作也失败。将标识信息保存至标识信息数据库的操作与事务操作属于同一个原子操作,如此,便实现了事务操作成功与标识信息存在于标识信息数据库的一致性。进一步,可通过检查消息的标识信息是否存在于标识信息数据库,判断该消息对应的事务操作是否完成,不需要调用应用设备2的事务操作检查接口进行一一查询,便可实现事务操作与消息发送的一致性,并且这样更简单、方便。

在其中一个实施例中,将标识信息保存至对应的标识信息数据库包括:当执行完毕事务操作,将标识信息保存至对应的标识信息数据库。

在该实施例中,将标识信息保存至对应的标识信息数据库,为应用设备2在事务操作完成后进行的独立动作。具体可通过如下方式实现:应用设备2 检查到事务操作完成,便将该事务对应消息的标识信息保存至标识信息数据库中;事务操作完成后,向应用设备2发送事务操作完成的提醒,应用设备2根据该提醒,将该事务对应消息的标识信息保存至标识信息数据库中。以实现通过检查消息的标识信息是否存在于标识信息数据库,判断该消息对应的事务操作是否完成。本方案不需要调用应用设备2的事务操作检查接口进行一一查询,便可实现事务操作与消息发送的一致性。

如图5所示,对应地,本申请还提供一种消息设备的消息处理方法,其中,该方法包括:

S31,接收对应的应用设备2发送的消息及消息的标识信息。

S32,根据消息更新对应的待处理消息集合。

S33,根据待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询。

S34,根据对应的查询结果处理待处理消息。

在该实施例中,消息设备接收对应应用设备2发送的消息及消息的标识信息时,若消息的标识信息未设置在消息实体中,消息设备应将消息与消息的标识信息进行捆绑,使其一一对应,并与消息设备中的其它消息相区别;若消息的标识信息设置在消息实体中,消息设备接收后,使其与其它消息相区别。例如,消息设备可通过将接收到的消息进行事务区分标记及事务内消息区分标记两层标记,以实现消息设备内部消息的相互区分。第四装置32根据消息更新对应的待处理消息集合时,需要根据自己的管理机制,将上述接收到的消息放入待处理消息集合,此处的消息集合也可理解为消息队列。消息设备根据待处理消息集合中待处理消息的标识信息,在对应的标识信息数据库进行查询时,首先需要判断待处理消息中需要查询的消息的标识信息,其次查询标识信息数据库中是否存在该需要查询的消息的标识信息。具体地,需要查询的消息,可通过消息设备根据不同事务的具体情况预设相应的条件进行判断决定,或者借助消息设备的管理机制判断决定。第八装置34根据对应的查询结果处理待处理消息时,具体地,是根据在标识信息数据库中是否查询到需要查询的消息的标识信息,进一步对该消息进行提交和删除处理。

在其中一个实施例中,根据消息更新对应的待处理消息集合包括:将消 息设置为待处理状态,并将消息添加至对应的待处理消息集合。

在该实施例中,消息设备将接收到的消息设置为待处理状态的具体实现方式不做限制,可通过具体标记符实现,也可通过放置在不同的队列集合中实现。例如,消息设备接收到消息后,将其标记为处于half状态,也即处于待处理(提交)状态,在消息设备未接收到该消息的处理指令前,该消息一直处于half状态。或者,通过将消息进行分类、分区域放置等实现,消息设备将接收到的消息放置在待处理消息队列集合,默认接收到的消息均为待处理消息。将消息添加至对应的待处理消息集合中,以等待后续处理。

如图6所示,在其中一个实施例中,消息设备的消息处理方法还包括:

S35,接收应用设备2发送的消息处理指令。

S36,根据消息处理指令对对应消息进行处理。

S37,根据处理后的对应消息更新待处理消息集合。

在该实施例中,事务操作完毕后,消息设备接收应用设备2发送的消息处理指令,该指令需要携带对应至消息设备中待处理消息的相关信息,具体地,可通过该指令携带的对应待处理消息的标识信息实现。因该标识信息不仅与事务操作中的消息唯一对应,还携带消息设备可识别的事务识别信息,即消息设备接收到事务操作结果的指令时,能够根据指令中的标识信息,对应至消息设备中某个事务的某条待处理消息。本领域的技术人员应当能够认识到,将消息处理指令对应至消息设备待处理消息的实现方式是不限制的,应用设备2与消息设备之间的满足要求的信息交互机制均可。消息设备接收到消息处理指令后,便根据该指令携带的对应至消息设备中待处理消息的相关信息,对该待处理消息进行处理。若指令内容为消息提交,则对对应的消息进行提交;若指令内容为消息删除(回滚),则对对应的消息进行删除。此时消息中的标识信息随着消息的提交/删除而被清除。将处理过的消息所存在的消息集合进行更新,消息处理后,其存储资源释放,消息集合进行更新。

在其中一个实施例中,根据待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询包括:

当待处理消息集合中待处理消息的存续时长超过预定的处理时长阈值,根据待处理信息的标识信息在对应的标识信息数据库进行查询。

在该实施例中,消息设备的管理机制,可根据不同事务的属性特点,对该事务操作对应的消息,预设处于待处理状态的时间阈值。在对应的标识信息数据库查询的前提条件为:第一,存在满足条件的待处理消息;第二,获取该待处理消息的标识信息。所谓满足条件的待处理消息,根据其以待处理状态存在于消息集合中的时长确定,超过预设时间阈值的,便被列为待查询对象。如果消息的标识信息与消息实体绑定在一起,直接读取其标识信息便可;否则,需要根据消息调取其标识信息。具体的查询顺序不在限制,可以查询时待处理消息处于待处理状态的时长进行,例如,处于待处理消息的状态时间最长的,最先对其进行查询;也可根据满足待查询条件的待处理消息在消息集合中的位置进行处理,例如,根据消息集合中从上至下/从左至右等的顺序进行处理等。本领域的技术人员应当能够认识到,设置上述处理顺序的具体方式并不做限制,实现满足待查询条件的消息被有序的处理即可。

另外,消息设备也可将待处理消息进行分类放置,例如,当消息设备接收到消息时放入第一待处理消息集合中,当第一待处理消息集合中的消息满足上述阈值条件时,便自动转存至第二待处理消息集合中,此时,第六装置33只需根据第二待处理消息集合中消息的标识信息,在对应的标识信息数据库进行查询。

在其中一个实施例中,消息设备的消息处理方法还包括:

根据待处理消息在待处理消息集合中的存续时长信息确定处理时长阈值。

在该实施例中,消息设备的根据待处理消息在待处理消息集合中的存续时长信息,确定处理时长阈值时,具体可根据不同事务的属性特点,对该事务操作对应的消息,预设处于待处理状态的时间阈值。例如,针对操作时间比较长的事务,可设置较大的时间阈值;针对操作时间比较短的事务,可设置较小的时间阈值。阈值的大小根据具体情况确定。不宜太大,以避免查询启动过于滞后于事务操作;也不宜太小,以避免查询启动过早事务操作还未结束;前述两种情况都容易产生事务操作与消息发送的最终不一致性。

在其中一个实施例中,根据对应的查询结果处理待处理消息包括:若对应的查询结果非空,提交待处理消息;若查询结果为空,删除待处理消息。 根据相应的处理结果更新待处理消息集合。

在该实施例中,因只有当事务操作完成时标识信息才存在于标识信息数据库中,故当在标识信息数据库中查询到与待处理消息的标识信息同样的标识信息时,表明该事务操作已经完成,而此时该事务对应的消息在消息设备中还处于待处理状态,事务操作与消息发送产生了不一致,此时提交该事务操作对应的消息,实现了事务操作与消息发送的最终一致性。同样地,因只有当事务操作完成时标识信息才存在于标识信息数据库中,故当在标识信息数据库中未查询到与待处理消息的标识信息同样的标识信息时,表明该事务操作失败,而此时该事务对应的消息在消息设备中还处于待处理状态,事务操作与消息发送产生了不一致,此时删除(回滚)该事务操作对应的消息,实现了事务操作与消息发送的最终一致性。

另外,在该实施例中,消息处理后,其存储资源释放,对消息集合进行更新。具体更新方式,可以为左右/上下的待处理消息进行顺序填补,也可以为将接收到的新的消息进行填补等。

如图7所示,为本申请的消息处理方法其中一实施例的流程图。该消息处理方法包括如下步骤:

S21,应用设备2根据事务操作,生成对应的消息及消息的标识信息。

S22,应用设备2向对应的消息设备发送消息及标识信息。

S31,消息设备接收对应的应用设备2发送的消息及消息的标识信息。

S32,消息设备根据消息更新对应的待处理消息集合。

S23,应用设备2执行事务操作,并将标识信息保存至对应的标识信息数据库,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库。

S33,消息设备根据待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询。

S34,消息设备根据对应的查询结果处理待处理消息。

该实施例中消息处理方法的具体步骤的详细描述,请参照前述对应标号步骤的描述。在此不再赘述。

在该实施例中,当事务完成后,消息设备完全依赖,根据其待处理消息集合中的消息的标识信息对标识信息数据库进行查询的结果,判断事务完成 状态,并进一步对待处理消息进行处理。消息设备在待处理消息满足查询条件时,随时可以对对应标识信息数据库进行查询,以实现消息发送与事务操作的最终一致性。

另外,该实施例中的步骤并不要求按照上述书写顺序完成,其中有些步骤的顺便是不限制的,甚至可以同步,例如步骤S32与步骤S23的先后顺序不定,也可同步。

如图8所示,为本申请的消息处理方法其中又一实施例的流程图。该消息处理方法包括如下步骤:

S21,应用设备根据事务操作,生成对应的消息及消息的标识信息。

S22,应用设备向对应的消息设备发送消息及标识信息。

S31,消息设备接收对应的应用设备发送的消息及消息的标识信息。

S32,消息设备根据消息更新对应的待处理消息集合。

S23,应用设备执行事务操作,并将标识信息保存至对应的标识信息数据库,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库。

S24,当执行完毕事务操作,向消息设备发送关于消息的消息处理指令。

S35,接收应用设备发送的消息处理指令。

S36,根据消息处理指令对对应消息进行处理。

S37,根据处理后的对应消息更新待处理消息集合。

S33,消息设备根据待处理消息集合中待处理消息的标识信息在对应的标识信息数据库进行查询。

S34,消息设备根据对应的查询结果处理待处理消息。

该实施例中消息处理方法的具体步骤的详细描述,请参照前述对应标号步骤的描述。在此不再赘述。

在该实施例中,当事务完成时,应用设备向消息设备发送该事务对应的消息处理指令,消息设备接收该指令,并按照指令对对应的消息进行处理。消息处理后,便释放消息存储资源,更新待处理消息集合。消息设备检查其待处理消息集合中是否有满足查询的待处理消息,根据所检查到的待处理消息集合中的消息的标识信息,对对应的标识信息数据库进行查询,以判断该消息对应的事务操作是否完成,并进一步对该待处理消息进行处理。消息设 备在待处理消息满足查询条件时,随时可以对对应标识信息数据库进行查询,以实现消息发送与事务操作的最终一致性。

另外,该实施例中的步骤并不要求按照上述书写顺序完成,其中有些步骤的顺便是不限制的,甚至可以同步,例如步骤S32与步骤S23的先后顺序不定,也可同步。

现有技术相比,本申请的消息处理方法,通过在事务操作时,为消息设置标识信息,并将消息及其标识消息从应用设备传输至消息设备。同时执行事务操作,将标识信息保存至对应的标识信息数据库,其中,仅当事务操作被执行完毕时,标识信息存在于标识信息数据库。从而可得出,只有执行成功的事务,其对应的数据库中才存在消息的标识信息,在消息设备回查遗漏处理的消息的处理情况时,只需要查询应用设备的标识信息数据库中是否存在对应的标识信息,即可确保消息发送与事务处理的一致性。同时本申请将标识信息存储至标识信息数据库的操作,定义为与对应的事务操作属于同一个原子操作,从而通过事务操作的一致性,确保了事务操作与消息发送的最终一致性,更加完美地解决了事务操作与消息发送的一致性问题。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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