[发明专利]队列消息一致性的实现方法、装置、设备及存储介质有效
申请号: | 201711181692.4 | 申请日: | 2017-11-23 |
公开(公告)号: | CN108009027B | 公开(公告)日: | 2019-09-20 |
发明(设计)人: | 吴金霖 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙) 11412 | 代理人: | 袁媛 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 队列 消息 一致性 实现 方法 装置 设备 存储 介质 | ||
本发明公开了队列消息一致性的实现方法、装置、设备及存储介质,其中方法包括:消息发送方开启数据库事务及消息事务,并创建消息,进行数据库事务及消息事务提交,提交成功,将消息发送给消息接收方,消息的头部携带有消息的UUID以及replyTo的队列地址;消息接收方接收到消息后,开启消息事务及数据库事务,将消息的UUID保存到数据库中,并在执行业务逻辑成功后分别提交数据库事务及消息事务,提交成功,根据replyTo的队列地址,向消息发送方返回针对消息的消费成功确认消息。本发明所述方案提供了一个完整的队列消息一致性的框架模型,从而提升了系统性能等。
【技术领域】
本发明涉及业务处理技术,特别涉及队列消息一致性的实现方法、装置、设备及存储介质。
【背景技术】
在业务系统中,两个服务间通常会使用消息中间件来进行通信,如ActiveMQ、RabbittMQ等。消息通常包括队列消息(Queue)和订阅消息(Topic)两种,本发明中主要关注队列消息。
在实际应用中,消息发送方通常会执行写数据库和发送消息的操作,消息接收方接收到消息后对消息进行处理,需要确保消息在发送方和接收方的一致性,即双方正确发送和消费了消息,并根据消息正确处理了业务逻辑等。
要确保一致性,消息发送方写数据库和发送消息的操作均要成功,消息接收方接收到消息后要保证业务正确运行,消息要保证不丢失,消息接收方一定能够接收到消息,接收方对同一个消息只能消费一次等。上述过程中的任何一个环节出现问题都会导致不一致。
目前业界仅存在一些针对单个环节的解决方案,而没有一个完整的解决方案,从而影响了系统性能。
【发明内容】
有鉴于此,本发明提供了队列消息一致性的实现方法、装置、设备及存储介质。
具体技术方案如下:
一种队列消息一致性的实现方法,包括:
消息发送方开启数据库事务及消息事务,并创建消息;
所述消息发送方进行数据库事务及消息事务提交,提交成功,将所述消息发送给消息接收方,所述消息的头部携带有所述消息的通用唯一识别码UUID以及回复replyTo的队列地址,以便所述消息接收方接收到所述消息后,开启消息事务及数据库事务,将所述消息的UUID保存到数据库中,并在执行业务逻辑成功后分别提交数据库事务及消息事务,提交成功,根据所述replyTo的队列地址,向所述消息发送方返回针对所述消息的消费成功确认消息。
根据本发明一优选实施例,该方法进一步包括:
所述消息发送方创建消息之后,执行保存消息到数据库的操作,待数据库事务提交成功后,将所述消息真正地保存到数据库中;
所述消息发送方执行发送消息的操作,待消息事务提交成功后,将所述消息真正地发送给所述消息接收方。
根据本发明一优选实施例,该方法进一步包括:
所述消息发送方执行发送消息的操作之后,执行业务逻辑,执行成功,提交数据库事务;
若在数据库事务提交成功之前的操作出现异常,则所述消息发送方触发消息事务回滚及数据库事务回滚;
若在数据库事务提交成功后,消息事务提交异常,则所述消息发送方触发消息事务回滚。
根据本发明一优选实施例,该方法进一步包括:
所述消息发送方执行保存消息到数据库的操作之后,将所述消息的状态设置为已发送待确认RUNNING状态;
若消息事务提交异常,则所述消息发送方将数据库中保存的所述消息的状态修改为未发送WAITING状态;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711181692.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种银纳米线微图案化的制备方法
- 下一篇:一种蔬菜施肥方法