[发明专利]一种异步消息可靠投递和处理的方法和装置在审
申请号: | 202110489210.1 | 申请日: | 2021-04-30 |
公开(公告)号: | CN113094362A | 公开(公告)日: | 2021-07-09 |
发明(设计)人: | 牛安宇;袁琳 | 申请(专利权)人: | 中国银行股份有限公司 |
主分类号: | G06F16/215 | 分类号: | G06F16/215;G06F16/22;G06F16/23;G06F16/2457 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 王天尧;谷敬丽 |
地址: | 100818 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 异步 消息 可靠 投递 处理 方法 装置 | ||
本发明提供了一种异步消息可靠投递和处理的方法和装置,本发明涉及大数据技术,该方法包括:通过消息生产者进行业务交易处理,确定业务数据和消息数据;将业务数据写入数据库业务表;业务数据写入成功后,将消息数据写入与数据库业务表在同一个数据库事务中的数据库消息表;消息数据写入成功后,通过消息生产者产生消息数据对应的异步消息投递至消息队列;消息消费者实时从消息队列中读取异步消息,进行异步业务处理;其中,异步业务处理支持幂等性;异步业务处理成功后,将异步消息对应的消息数据从数据库消息表中删除。从流程上保证了异步消息的可靠投递和处理。
技术领域
本发明涉及计算机数据处理技术领域,尤其涉及一种异步消息可靠投递和处理的方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在IT系统设计和建设过程中,技术人员需要保证用户单次交易的原子性,即用户单次交易可能涉及多次数据库操作,需要保证如果交易成功,所有数据库操作全部成功,如果交易失败,不管交易进行到哪一步,都需要保证本次操作所有数据库操作全部回退至操作前的状态。现有成熟的商用数据库产品通常可以使用自带的机制保障用户单次交易所有数据库操作的事务一致性。
但对于采用消息队列中间件进行异步操作的系统来说,则需保证本地数据库操作与消息队列操作的原子性,即如果本地数据库操作成功,则消息应成功被投递至消息队列中;本地数据库操作失败,则消息不应被投递至消息队列中。
数据库与消息队列属于不同的中间件,无法通过中间件自身机制保证二者操作的原子性和一致性。
对于某些业务场景,一定不能出现本地数据库操作成功,但消息没有成功投递至消息队列中,或本地数据库操作失败,但消息被成功投递至消息队列中的情况。
因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
发明内容
本发明实施例提供一种异步消息可靠投递和处理的方法,从流程上保证了异步消息的可靠投递和处理,严格的保证了数据库本地事务与异步消息投递的事务一致性,保证了异步业务处理流程中,异步消息不丢失,异步处理可靠完成,确保了业务流程的完整性,该方法包括:
通过消息生产者进行业务交易处理,确定业务数据和消息数据;
将业务数据写入数据库业务表;
业务数据写入成功后,将消息数据写入与数据库业务表在同一个数据库事务中的数据库消息表;
消息数据写入成功后,通过消息生产者产生消息数据对应的异步消息投递至消息队列;
消息消费者实时从消息队列中读取异步消息,进行异步业务处理;其中,异步业务处理支持幂等性;
异步业务处理成功后,将异步消息对应的消息数据从数据库消息表中删除。
本发明实施例还提供一种异步消息可靠投递和处理的装置,包括:
业务数据和消息数据确定模块,用于通过消息生产者进行业务交易处理,确定业务数据和消息数据;
业务数据写入模块,用于将业务数据写入数据库业务表;
消息数据写入模块,用于业务数据写入成功后,将消息数据写入与数据库业务表在同一个数据库事务中的数据库消息表;
异步消息投递模块,用于消息数据写入成功后,通过消息生产者产生消息数据对应的异步消息投递至消息队列;
异步业务处理模块,用于消息消费者实时从消息队列中读取异步消息,进行异步业务处理;其中,异步业务处理支持幂等性;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银行股份有限公司,未经中国银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110489210.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可一键开锁的电子锁
- 下一篇:一种液体动力机