CN112822091A - 一种消息处理方法和装置 - Google Patents

一种消息处理方法和装置 Download PDF

Info

Publication number
CN112822091A
CN112822091A CN201911125238.6A CN201911125238A CN112822091A CN 112822091 A CN112822091 A CN 112822091A CN 201911125238 A CN201911125238 A CN 201911125238A CN 112822091 A CN112822091 A CN 112822091A
Authority
CN
China
Prior art keywords
message
transaction
state
preparation
writing
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
Application number
CN201911125238.6A
Other languages
English (en)
Other versions
CN112822091B (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201911125238.6A priority Critical patent/CN112822091B/zh
Publication of CN112822091A publication Critical patent/CN112822091A/zh
Application granted granted Critical
Publication of CN112822091B publication Critical patent/CN112822091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种消息处理方法,该方法包括:扫描缓存队列中的准备消息;若确定存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;当确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。该方法能够保持生成设备和中间设备上事务状态的一致。

Description

一种消息处理方法和装置
技术领域
本发明涉及信息处理技术领域,特别涉及一种消息处理方法和装置。
背景技术
目前在不同应用之间进行数据交互,为了达到应用解耦等目的,会引入一个消息中间件,甲机房部署一个应用A,作为消息的生产者,乙机房部署一个应用B作为消息的消费者。生产者把消息发送到消息中间件的BROKER中暂存起来,消费者从BROKER中获取消息执行相应的业务逻辑。
一方面发送者要求要能快速可靠的将消息存储至BROKER,另一方面又希望能支持事务特性和本地的事务结合。如果本地事务成功则BROKER端的事务提交、如果本地事务失败则BROKER端的事务回滚。
ROKETMQ提供了基于DB的事务消息功能。通过将客户端发送的事务消息先写入DB如果,如果事务提交则让消息对消费者可见,如果事务回滚则删除消息。这种实现在一定程度上满足了用户对事务消息的需求。
但是上述实现方式没有完善的事务补偿机制:当本地事务成功,向MQ提交事务时,如果失败等场景出现时会导致状态不一致的情况。具体为:本地事务成功,MQ事务却是未知,最终只能执行一些默认操作来终止事务,默认操作可能是提交,也可能是回滚,这就导致事务不一致。
发明内容
有鉴于此,本申请提供一种消息处理方法和装置,能够保持生成设备和中间设备上事务状态的一致。
为解决上述技术问题,本申请的技术方案是这样实现的:
一种消息处理方法,该方法包括:
扫描缓存队列中的准备消息;
若确定存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
当确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;
当确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
一种消息处理装置,该装置包括:扫描单元、获取单元、确定单元和处理单元;
所述扫描单元,用于扫描缓存队列中的准备消息;
所述获取单元,用于若确定所述扫描单元扫描到的准备消息中存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
所述确定单元,用于确定所述获取单元获取的事务状态为成功状态,还是失败状态;
所述处理单元,用于当所述确定单元确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当所述确定单元确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述消息处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述消息处理方法的步骤。
由上面的技术方案可知,本申请中通过对缓存队列中的Prepare消息进行超时处理,获取对应事务的处理状态,按照处理状态对对应的事务消息进行处理,完善了事务补偿机制,能够保持生成设备和中间设备上事务状态的一致。
附图说明
图1为本申请实施例一中消息处理流程示意图;
图2为本申请实施例二中消息处理流程示意图;
图3为本申请实施例中应用于上述技术的装置结构示意图;
图4为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
本申请实施例中提供一种消息处理方法,通过对缓存队列中的准备(Prepare)消息进行超时处理,获取对应事务的处理状态,按照处理状态对对应的事务消息进行处理,完善了事务补偿机制,能够保持生成设备和中间设备上事务状态的一致。
本申请实施例中消息处理***包括:生成设备、中间设备和消费设备;其中,生产设备作为消息的生产者,中间设备作为消息的暂存设备,消费者作为消息的消费者,中间设备安装有broker。
生产者产生消息后将消息发送给中间设备,由中间设备暂存;消费设备从中间设备获取消息执行相应的业务逻辑。
本申请实施例中生产者在向发送者发送事务消息后,处理本地事务,在处理本地事务结束时,不仅根据处理结果向中间设备发送提交(Commit)消息,或回滚(rollback)消息;还会在本地记录本地处理事务的处理结果,即记为事务状态,事务状态包括:成功、失败。
在具体实现时,可能需要维护多个事务,使用中间设备响应的事务ID对应记录该事务的事务状态:
如事务1,状态为:成功;
事务2,状态为失败。
在具体实现时,可以使用表格的方式记录,也可以使用日志方式记录,对于记录事务ID和事务状态之间的对应的关系的方式,本申请实施例中不进行限制。
中间设备针对接接收到的生产设备发送的消息时,顺序读写;并将存储到本地的数据复制存储到备份设备。
本地文件顺序存储加上***镜像文件解决了写入性能慢的问题,使得单个broker事务消息写入TPS可达到3W+,是现有方案的10倍左右,并且针对一个topic可以通过横向扩展broker的个数量线性的提高性能。Broker间文件的复制保证了***的高可用,当一个broker出现问题时可以及时的切换到另一个broker继续提供服务。
下面给出一次常规消息处理过程,即中间设备正常接收到生成设备发送的Commit消息,或rollback消息的处理过程,具体为:
第一步、生成设备向中间设备发送Prepare消息。
第二步、中间设备接收到Prepare消息时,将所述Prepare消息存储到缓存队列中,将所述Prepare消息写入日志数据库;并在向生成设备发送响应所述Prepare消息的消息时,携带为其分配的事务ID。
第三步、生产设备接收到针对所述Prepare消息的响应时,使用Prepare消息携带的事务ID发送事务消息。
第四步、中间设备接收到生成设备发送的事务消息时,将所述事务消息写入日志数据库,并向生成设备发送响应消息。
第五步、生成设备在发送事务消息后,进行本地事务处理,将事务处理结果记为所述事务的事务状态,并根据处理结果向中间设备发送Commit消息,或rollback消息。
当处理结果为成功时,发送Commit消息;当处理结果为失败时,发送rollback消息。
第六步、中间设备当接收到生成设备发送的Commit消息时,将所述Commit消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述Prepare消息删除;
当接收到rollback消息时,将rollback消息写入日志数据库;并将缓存队列中的所述Prepare消息删除。
为一个事务消息创建索引,即可以被消费设备获取进行相关处理。
至此,一个完成的消息处理流程结束。
下面结合附图,详细说明本申请实施例中异常情况下事务消息处理过程:
实施例一
该实施例中以中间设备未接收到Commit消息和rollback消息,且中间设备正常运行的情况为例。
参见图1,图1为本申请实施例一中消息处理流程示意图。具体步骤为:
步骤101,中间设备扫描缓存队列中的Prepare消息。
步骤102,若该中间设备确定存在超时的Prepare消息,则从生成设备查询该Prepare消息对应的事务状态。
这里确定Prepare消息超时,可以为:通过预先针对每个Prepare消息设置定时器,在定时器定时超时时,该Prepare消息还在缓存队列中,则确定该Prepare消息超时。
从生成设备查询该Prepare消息对应的事务状态,具体包括:
中间设备向生成设备发送事务状态查询请求;在该查询请求中携带对应事务的事务ID。
生成设备接收到查询请求时,获取本地存储的所述事务ID对应的事务状态,并响应给中间设备。
中间设备接收到生成设备响应事务状态时,获取事务状态。
所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;包括成功和失败状态。
步骤103,当该中间设备确定查询到的事务状态为成功状态时,将Commit消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述Prepare消息删除,结束本流程。
步骤104,当该中间设备确定查询到的事务状态为失败状态时,将rollback消息写入日志数据库;并将缓存队列中的所述Prepare消息删除。
无论事务状态是什么都需要将对应的消息写入日志数据库,并将对应的Prepare消息删除,针对事务状态为成功状态的事务,还需为该事务创建索引,创建的索引即为每条消息在log中的位置,也就是为消费设备提供获取事务消息的位置。
具体建立索引,以及消费者获取对应的消息的过程同现有实现,这里不再详细描述。
通过上述补偿机制,能够保证在提交事务失败的场景中事务状态一致。
实施例二
该实施例中以中间设备故障,且未接收到Commit消息和rollback消息的情况为例。
参见图2,图2为本申请实施例二中消息处理流程示意图。具体步骤为:
步骤201,故障恢复后,中间设备从日志数据库中获取未写入rollback消息和Commit消息的事务对应的Prepare消息,并存储到缓存队列中。
中间设备如果故障,缓存队列中的Prepare消息就会丢掉;
待设备故障恢复后,需要将未确定是否可由消费设备获取的事务消息对应的Prepare消息放到缓存队列中。
由于日志数据库中针对每个事务存储了其对应的所有消息,因此,可以判断哪条Prepare消息,没有对应的Commit消息,或rollback消息,来确定该事务相关消息是否处理结束,没有对应的Commit消息,或rollback消息,则确定未处理结束,需将对应的Prepare消息放到缓存队列中,继续处理;存在对应的Commit消息,或rollback消息,则确定处理结束。
步骤202,该中间设备从生成设备查询该Prepare消息对应的事务状态。
从生成设备查询该Prepare消息对应的事务状态,具体包括:
中间设备向生成设备发送事务状态查询请求;在该查询请求中携带对应事务的事务ID。
生成设备接收到查询请求时,获取本地存储的所述事务ID对应的事务状态,并响应给中间设备。
中间设备接收到生成设备响应事务状态时,获取事务状态。
所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;包括成功和失败状态。
步骤203,当该中间设备确定查询到的事务状态为成功时,将Commit消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述Prepare消息删除,结束本流程。
步骤204,当该中间设备确定查询到的事务状态为失败状态时,将rollback消息写入日志数据库;并将缓存队列中的所述Prepare消息删除。
无论事务状态是什么都需要将对应的消息写入日志数据库,并将对应的Prepare消息删除,针对事务状态为成功状态的事务,还需为该事务创建索引,创建的索引即为每条消息在log中的位置,也就是为消费设备提供获取事务消息的位置。
具体建立索引,以及消费者获取对应的消息的过程同现有实现,这里不再详细描述。
通过上述补偿机制,能够保证在中间设备故障再恢复导致的提交事务失败的场景中事务状态一致。
基于上述实现,本申请实施例中的中间设备能够提供事务消息的能力,减少外部依赖,保证发送的高可用;提高了中间设备的BROKER处理事务消息的性能,降低发送延时,提高了资源利用率;并提供了完善的事务补偿机制。
综上所述,本申请通过对缓存队列中的Prepare消息进行超时处理,或者将日志数据库中未处理完毕的消息对应的Prepare消息存储到缓存队列中,并获取对应事务的处理状态,按照处理状态对对应的事务消息进行处理,完善了事务补偿机制,能够保持生成设备和中间设备上事务状态的一致。
基于同样的发明构思,本申请实施例中还提供一种消息处理装置。参见图3,图3为本申请实施例中应用于上述技术的装置结构示意图。该装置包括:扫描单元301、获取单元302、确定单元303和处理单元304;
扫描单元301,用于扫描缓存队列中的准备消息;
获取单元302,用于若确定扫描单元301扫描到的准备消息中存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
确定单元303,用于确定获取单元302获取的事务状态为成功状态,还是失败状态;
处理单元304,用于当确定单元303确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当确定单元303确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
较佳地,所述装置进一步包括:接收单元305;
所述接收单元,用于接收生成设备发送的准备消息;接收生成设备发送的事务消息;
处理单元304,用于当所述接收单元接收到生成设备发送的准备消息时,将所述准备消息存储到缓存队列中,并将所述准备消息写入日志数据库;当所述接收单元接收到生成设备发送的事务消息时,将所述事务消息写入日志数据库。
较佳地,所述装置进一步包括:接收单元305;
接收单元305,用于接收生成设备发送的提交消息,接收生成设备发送的回滚消息;
处理单元304,进一步用于当接收单元305接收到生成设备发送的提交消息时,将所述提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当接收到生成设备发送的回滚消息时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
较佳地,
获取单元302,进一步用于本单元所在装置故障恢复后,从日志数据库中获取未写入回滚消息和提交消息的事务对应的准备消息;并存储到缓存队列中;从生成设备查询该准备消息对应的事务状态;
确定单元303,用于确定获取单元302获取的事务状态为成功状态,还是失败状态;
处理单元304,用于当确定单元303确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当确定单元303确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
较佳地,
处理单元304,进一步用于将接收单元305接收到发送者发送的消息时,顺序读写;将存储到本地的数据复制存储到备份设备。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
此外,本申请实施例中还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述消息处理方法的步骤。
另外,本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述消息处理方法的步骤。
图4为本发明实施例提供的电子设备的实体结构示意图。如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器510可以调用存储器430中的逻辑指令,以执行如下方法:
扫描缓存队列中的准备消息;
若确定存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
当确定查询到的事务状态为成功状态时,将提交提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;
当确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (12)

1.一种消息处理方法,其特征在于,该方法包括:
扫描缓存队列中的准备消息;
若确定存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
当确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;
当确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
接收到生成设备发送的准备消息时,将所述准备消息存储到缓存队列中,并将所述准备消息写入日志数据库;
接收到生成设备发送的事务消息时,将所述事务消息写入日志数据库。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
当接收到生成设备发送的提交消息时,将所述提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;
当接收到生成设备发送的回滚消息时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
4.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
故障恢复后,从日志数据库中获取未写入回滚消息和提交消息的事务对应的准备消息,并存储到缓存队列中;
从生成设备查询该准备消息对应的事务状态;
当确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;
当确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法进一步包括:
接收到发送者发送的消息时,顺序读写;
将存储到本地的数据复制存储到备份设备。
6.一种消息处理装置,其特征在于,该装置包括:扫描单元、获取单元、确定单元和处理单元;
所述扫描单元,用于扫描缓存队列中的准备消息;
所述获取单元,用于若确定所述扫描单元扫描到的准备消息中存在超时的准备消息,则从生成设备查询该准备消息对应的事务状态;其中,所述事务状态为生成设备在发送事务消息后处理本地事务结束时记录的事务状态;
所述确定单元,用于确定所述获取单元获取的事务状态为成功状态,还是失败状态;
所述处理单元,用于当所述确定单元确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当所述确定单元确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
7.根据权利要求6所述的装置,其特征在于,所述装置进一步包括:接收单元;
所述接收单元,用于接收生成设备发送的准备消息;接收生成设备发送的事务消息;
所述处理单元,用于当所述接收单元接收到生成设备发送的准备消息时,将所述准备消息存储到缓存队列中,并将所述准备消息写入日志数据库;当所述接收单元接收到生成设备发送的事务消息时,将所述事务消息写入日志数据库。
8.根据权利要求6所述的装置,其特征在于,所述装置进一步包括:接收单元;
所述接收单元,用于接收生成设备发送的提交消息,接收生成设备发送的回滚消息;
所述处理单元,进一步用于当所述接收单元接收到生成设备发送的提交消息时,将所述提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当接收到生成设备发送的回滚消息时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
9.根据权利要求6所述的装置,其特征在于,
所述获取单元,进一步用于本单元所在装置故障恢复后,从日志数据库中获取未写入回滚消息和提交消息的事务对应的准备消息;并存储到缓存队列中;从生成设备查询该准备消息对应的事务状态;
所述确定单元,用于确定所述获取单元获取的事务状态为成功状态,还是失败状态;
所述处理单元,用于当所述确定单元确定查询到的事务状态为成功状态时,将提交消息写入日志数据库;为所述事务创建索引,待消费设备获取,并将缓存队列中的所述准备消息删除;当所述确定单元确定查询到的事务状态为失败状态时,将回滚消息写入日志数据库;并将缓存队列中的所述准备消息删除。
10.根据权利要求6-9任一项所述的装置,其特征在于,
所述处理单元,进一步用于将所述接收单元接收到发送者发送的消息时,顺序读写;将存储到本地的数据复制存储到备份设备。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述的方法。
CN201911125238.6A 2019-11-18 2019-11-18 一种消息处理方法和装置 Active CN112822091B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911125238.6A CN112822091B (zh) 2019-11-18 2019-11-18 一种消息处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911125238.6A CN112822091B (zh) 2019-11-18 2019-11-18 一种消息处理方法和装置

Publications (2)

Publication Number Publication Date
CN112822091A true CN112822091A (zh) 2021-05-18
CN112822091B CN112822091B (zh) 2023-05-30

Family

ID=75852162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911125238.6A Active CN112822091B (zh) 2019-11-18 2019-11-18 一种消息处理方法和装置

Country Status (1)

Country Link
CN (1) CN112822091B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626457A (zh) * 2021-08-19 2021-11-09 福建天晴数码有限公司 缓存删除重试机制实现数据库与缓存一致性方法及***
CN113742354A (zh) * 2021-09-18 2021-12-03 中国银行股份有限公司 消息确认方法及装置、存储介质及电子设备
CN114116262A (zh) * 2021-12-02 2022-03-01 北京宇信科技集团股份有限公司 一种分布式异步数据通讯的处理方法、装置、介质和设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0578406A1 (en) * 1992-07-06 1994-01-12 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US20050262077A1 (en) * 2004-05-21 2005-11-24 Bea Systems, Inc. Logging last resource system
CN103312549A (zh) * 2013-06-26 2013-09-18 华为技术有限公司 一种事务管理方法及装置和***
US20160299948A1 (en) * 2015-04-07 2016-10-13 International Business Machines Corporation Database statistics based on transaction state
WO2016168530A1 (en) * 2015-04-16 2016-10-20 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
CN106462601A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 针对多盘区操作的原子写入
CN106503257A (zh) * 2016-11-15 2017-03-15 北京京东金融科技控股有限公司 基于binlog补偿机制的分布式事务服务方法及***
US20180101563A1 (en) * 2016-10-10 2018-04-12 Alibaba Group Holding Limited Database processing method, apparatus, and electronic device
CN108009027A (zh) * 2017-11-23 2018-05-08 北京百度网讯科技有限公司 队列消息一致性的实现方法、装置、设备及存储介质
US20180150503A1 (en) * 2016-11-29 2018-05-31 International Business Machines Corporation QUERY PROCESSING WITH BOUNDED STALENESS FOR TRANSACTIONAL MUTATIONS IN NoSQL DATABASE

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0578406A1 (en) * 1992-07-06 1994-01-12 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US20050262077A1 (en) * 2004-05-21 2005-11-24 Bea Systems, Inc. Logging last resource system
CN103312549A (zh) * 2013-06-26 2013-09-18 华为技术有限公司 一种事务管理方法及装置和***
CN106462601A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 针对多盘区操作的原子写入
US20160299948A1 (en) * 2015-04-07 2016-10-13 International Business Machines Corporation Database statistics based on transaction state
WO2016168530A1 (en) * 2015-04-16 2016-10-20 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US20180101563A1 (en) * 2016-10-10 2018-04-12 Alibaba Group Holding Limited Database processing method, apparatus, and electronic device
CN106503257A (zh) * 2016-11-15 2017-03-15 北京京东金融科技控股有限公司 基于binlog补偿机制的分布式事务服务方法及***
US20180150503A1 (en) * 2016-11-29 2018-05-31 International Business Machines Corporation QUERY PROCESSING WITH BOUNDED STALENESS FOR TRANSACTIONAL MUTATIONS IN NoSQL DATABASE
CN108009027A (zh) * 2017-11-23 2018-05-08 北京百度网讯科技有限公司 队列消息一致性的实现方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
猎人在吃肉: "《RocketMQ 4.3正式发布后,RocketMQ 分布式事务的介绍》", 《CSDN》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626457A (zh) * 2021-08-19 2021-11-09 福建天晴数码有限公司 缓存删除重试机制实现数据库与缓存一致性方法及***
CN113742354A (zh) * 2021-09-18 2021-12-03 中国银行股份有限公司 消息确认方法及装置、存储介质及电子设备
CN113742354B (zh) * 2021-09-18 2024-02-09 中国银行股份有限公司 消息确认方法及装置、存储介质及电子设备
CN114116262A (zh) * 2021-12-02 2022-03-01 北京宇信科技集团股份有限公司 一种分布式异步数据通讯的处理方法、装置、介质和设备
CN114116262B (zh) * 2021-12-02 2022-08-23 北京宇信科技集团股份有限公司 一种分布式异步数据通讯的处理方法、装置、介质和设备

Also Published As

Publication number Publication date
CN112822091B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
US11614867B2 (en) Distributed storage system-based data processing method and storage device
CN110968586B (zh) 分布式事务处理方法及装置
US7624112B2 (en) Asynchronously storing transaction information from memory to a persistent storage
CN112822091A (zh) 一种消息处理方法和装置
CN108833479B (zh) 一种数据同步方法和装置
US20070078911A1 (en) Replicating data across the nodes in a cluster environment
US9189303B2 (en) Shadow queues for recovery of messages
EP2921974A1 (en) Data restoration method and system
JPH11184744A (ja) メッセージキューイングシステム
CN111475583B (zh) 事务处理方法及装置
WO2020108325A1 (zh) 事务处理方法、装置和设备
CN110753084B (zh) 上链数据读取方法、缓存服务器及计算机可读存储介质
CN110888718A (zh) 分布式事务的实现方法及装置
EP3786802A1 (en) Method and device for failover in hbase system
CN109684128B (zh) 消息中间件的集群整体故障恢复方法、服务器及存储介质
CA3041211C (en) Utilizing nonce table to resolve concurrent blockchain transaction failure
CN113010549A (zh) 基于异地多活***的数据处理方法、相关设备及存储介质
WO2019041670A1 (zh) 一种降低功能页面请求次数的方法、存储介质、设备及***
CN112995262B (zh) 分布式事务提交方法、***及计算设备
CN111127088A (zh) 实现最终一致性的方法、装置、计算机设备及存储介质
WO2021082925A1 (zh) 一种交易处理的方法及装置
US8805942B2 (en) Storing and partitioning email messaging data
CN116662035A (zh) 消息队列事务消息的处理方法和装置
CN111753141A (zh) 一种数据管理方法及相关设备
CN104834724A (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