一种事务消息的传输方法和设备技术

技术编号:13075227 阅读:40 留言:0更新日期:2016-03-30 10:50
本申请公开了一种事务消息的传输方法和设备,该方法包括:中间件设备接收来自业务处理设备的第一事务消息,并将第一事务消息存储到本地的第一文件中,所述第一事务消息中携带的状态为准备状态;所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;所述中间件设备将所述第二事务消息发送给业务响应设备。本申请实施例中,中间件设备在收到事务消息之后,可以通过第一文件来存储事务消息,并保证消息的一致性,从而避免与第三方数据库的交互。中间件设备的处理效率很高,处理性能较好,并能够提高中间件设备的使用率,缩减大量的第三方数据库的使用成本,减少网络开销。

【技术实现步骤摘要】

本申请涉及互联网
,尤其涉及一种事务消息的传输方法和设备
技术介绍
消息一致性在分布式系统中广泛存在,也是分布式系统中强依赖的应用场景,而 事务消息是业界内解决消息一致性的通用解决方案。在现有技术中,中间件设备需要依赖 第Η方数据库的存储来实现事务消息的传输过程。 具体的,业务处理设备处理业务逻辑,并在业务逻辑的处理过程中,业务处理设备 向中间件设备发送事务消息,该事务消息中携带的状态为准备状态(Prepared)。中间件设 备在收到该事务消息之后,在第Η方数据库中存储该事务消息,并向业务处理设备通知已 经收到事务消息的信息,由业务处理设备继续处理剩余的业务逻辑。在业务逻辑处理完成 之后,业务处理设备向中间件设备发送事务消息,该事务消息中携带的状态为提交状态。中 间件设备在收到该事务消息之后,从第Η方数据库中检索对应的状态为准备状态的事务消 息,并利用当前收到的事务消息替换第Η方数据库中存储的事务消息。中间件设备向业务 响应设备发送第Η方数据库中存储的事务消息,并在事务消息被成功发送给业务响应设备 之后,中间件设备删除第Η方数据库中存储的该事务消息。业务响应设备在收到事务消息 之后,进行后续业务处理。 在上述处理过程中,中间件设备需要通过与第Η方数据库的交互,来实现事务消 息的传输过程。在中间件设备与第Η方数据库的交互过程中,会涉及到第Η方数据库的存 储处理、查询处理、更新处理,而第Η方数据库的上述处理均需要很长时间,其处理效率很 低,而且处理性能较差。
技术实现思路
本申请实施例提供一种事务消息的传输方法和设备,W通过文件来存储事务消 息,并保证消息的一致性,从而可W避免与第Η方数据库的交互。 本申请实施例提供一种事务消息的传输方法,所述方法包括W下步骤: 中间件设备接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储 到本地的第一文件中,所述第一事务消息中携带的状态为准备状态; 所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件 中,所述第二事务消息中携带的状态为提交状态; 所述中间件设备将所述第二事务消息发送给业务响应设备。 所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件 的过程,具体包括: 所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息 的信息发送给所述业务处理设备;所述中间件设备接收来自所述业务处理设备的第二事 务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息 中携带的状态为回滚状态时,所述中间件设备丢弃所述第二事务消息;当所述第二事务消 息中携带的状态为提交状态时,所述中间件设备将所述第二事务消息存储到所述第一文件 中;或者, 所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息 的信息W及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;所 述中间件设备接收来自所述业务处理设备的携带所述第一位置信息W及消息状态的消息, 所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,所述中间件设备 丢弃当前收到的信息;当所述消息状态为提交状态时,所述中间件设备利用所述第一位置 信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息W及所述提交状态生 成第二事务消息,并将所述第二事务消息存储到所述第一文件中。 所述方法进一步包括: 所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所 述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态 W及所述第一位置信息存储到本地的第二文件中; 所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设 备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用 所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并 将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带 的提交状态。 所述方法进一步包括: 所述中间件设备定时查询所述第二文件中存储的消息状态;如果所述消息状态为 准备状态,则所述中间件设备向对应的业务处理设备发送查询消息,所述查询消息用于询 问业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所 述中间件设备收到业务处理设备会向中间件设备发送携带提交状态或者回滚状态的消息 的响应消息,则所述中间件设备继续保存所述第一文件中存储的第一事务消息;如果所述 中间件设备收到业务处理设备不会向中间件设备发送携带提交状态或者回滚状态的消息 的响应消息,则所述中间件设备从所述第一文件中删除对应的第一事务消息。 所述方法进一步包括: 所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所 述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态 W及所述第一位置信息存储到本地的第Η文件中; 所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设 备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所 述第二事务消息对应的所述第一位置信息W及所述第二事务消息中携带的提交状态存储 到所述第Η文件中。 所述方法进一步包括: 当所述第二文件中的消息状态和第一位置信息被异常删除时,所述中间件设备遍 历所述第Η文件中存储的消息状态;如果所述第Η文件中存储的对应于同一第一位置信息 的消息状态包括准备状态,则所述中间件设备将所述第一位置信息和所述准备状态存储到 所述第二文件中;如果所述第Η文件中存储的对应于同一第一位置信息的消息状态包括准 备状态和提交状态,则所述中间件设备将所述第一位置信息和所述提交状态存储到所述第 二文件中。 所述方法进一步包括: 所述中间件设备在将所述第二文件中存储的第一位置信息对应的准备状态替换 为所述第二事务消息中携带的提交状态之后,所述中间件设备确定所述第二事务消息在所 述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述 第二位置信息;和/或, 所述中间件设备在将所述第二事务消息对应的所述第一位置信息W及所述第二 事务消息中携带的提交状态存储到所述第Η文件之后,所述中间件设备确定所述第二事务 消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息 替换为所述第二位置信息。 所述第一文件具体包括commitlog文件;所述第二文件具体包括Transaction State T油le文件;所述第Η文件具体包括Redolog文件。 本申请实施例提供一种中间件设备,所述中间件设备具体包括: 第一事务消息处理模块,用于接收来自业务处理设备的第一事务消息,并将所述 第一事务消息存储到所述中间件设备的第一文件中;其中,所述第一事务消息中携带的状 态为准备状态; 第二事务消息处理模块,用于获得第二事务消息,并将所述第二事务消息存储到 所述第一文件中,所述第二事务消息中携带的状态为提交状态; 第二事务消息发送模块,用于将所述第二事务消息发送给业务响应设备。 所述第二事务消息处理模块,具体用于在收到所述第一事本文档来自技高网...

【技术保护点】
一种事务消息的传输方法,其特征在于,所述方法包括以下步骤:中间件设备接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到本地的第一文件中,所述第一事务消息中携带的状态为准备状态;所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;所述中间件设备将所述第二事务消息发送给业务响应设备。

【技术特征摘要】

【专利技术属性】
技术研发人员:钱进
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1