[发明专利]一种消息传输方法及系统在审
| 申请号: | 202111624654.8 | 申请日: | 2021-12-28 |
| 公开(公告)号: | CN114389759A | 公开(公告)日: | 2022-04-22 |
| 发明(设计)人: | 刘德建;叶伟;汪松;李佳 | 申请(专利权)人: | 福建天晴数码有限公司 |
| 主分类号: | H04L1/16 | 分类号: | H04L1/16 |
| 代理公司: | 福州市博深专利事务所(普通合伙) 35214 | 代理人: | 张明 |
| 地址: | 350000 福建省福州市开发区君竹路8*** | 国省代码: | 福建;35 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 消息 传输 方法 系统 | ||
本发明公开的一种消息传输方法及系统,生产端将待消费数据和事件编号发送至消息队列;生产端若接收到消息队列返回的接收成功消息,则在数据库中将事件编号对应的事件状态更新为已发送;消费者从消息队列中获取事件编号和待消费数据,并在数据库中将事件编号对应的事件状态更新为已接收;消费端接收到事件编号和待消费数据后开启事务,在事务中消费待消费数据,并在数据库中将事件编号对应的事件状态更新为已处理。因此,通过事务机制,在消费端消费数据时,能够保证事件状态和事件数据的保存或处理同时成功或者同时失败,避免生产端或者消费端因网络等问题导致的数据不一致问题。
技术领域
本发明涉及消息队列技术领域,特别涉及一种消息传输方法及系统。
背景技术
消息队列(Message Queue,MQ)里消息丢失分为两种情况:生产者消息丢失和消费者消息丢失。
目前为了防止消费者消息丢失引入了消息确认ack机制,当消息处理完成后,给MQ发送一个确认消息告诉MQ消息已消费可以删除该消息。但是如果消费者因为异常连接断开的情况下,MQ没有收到消费者发出的确认信息,则会把消息转发给其他保持在线的消费者;另一种情况就是生产者执行完前置事务后,需要发送给MQ的消息还未发送成功时,生产者因为异常链接断开,这时候MQ还未收到消息,则此消息就会丢失。
发明内容
本发明所要解决的技术问题是:提供了一种消息传输方法及系统,能够有效避免消息队列的消息丢失情况,保证业务的一致性。
为了解决上述技术问题,本发明采用的技术方案为:
一种消息传输方法,包括步骤:
生产端将待消费数据和事件编号发送至消息队列;
生产端若接收到消息队列返回的接收成功消息,则在数据库中将所述事件编号对应的事件状态更新为已发送;
消费端从消息队列中获取所述事件编号和待消费数据,并在数据库中将所述事件编号对应的事件状态更新为已接收;
消费端接收到所述事件编号和待消费数据后开启事务,在事务中消费所述待消费数据,并在数据库中将所述事件编号对应的事件状态更新为已处理。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种消息传输系统,包括:
生产端,用于将待消费数据和事件编号发送至消息队列;若接收到消息队列返回的接收成功消息,则在数据库中将所述事件编号对应的事件状态更新为已发送;
消费端,用于从消息队列中获取所述事件编号和待消费数据,并在数据库中将所述事件编号对应的事件状态更新为已接收;接收到所述事件编号和待消费数据后开启事务,在事务中消费所述待消费数据,并在数据库中将所述事件编号对应的事件状态更新为已处理。
本发明的有益效果在于:生产端将待消费数据和事件编号发送至消息队列;生产端若接收到消息队列返回的接收成功消息,则在数据库中将事件编号对应的事件状态更新为已发送;消费者从消息队列中获取事件编号和待消费数据,并在数据库中将事件编号对应的事件状态更新为已接收;消费端接收到事件编号和待消费数据后开启事务,在事务中消费待消费数据,并在数据库中将事件编号对应的事件状态更新为已处理。因此,消费端根据事件编号消费待消费数据,能够通过判断幂等性来防止重复消费;并且通过事务机制,在消费端消费数据时,能够保证事件状态和事件数据的保存或处理同时成功或者同时失败,避免生产端或者消费端因网络等问题导致的数据不一致问题。
附图说明
图1为本发明实施例的一种消息传输方法的流程图;
图2为本发明实施例的一种消息传输系统的示意图;
图3为本发明实施例的一种消息传输方法的具体步骤流程图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建天晴数码有限公司,未经福建天晴数码有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111624654.8/2.html,转载请声明来源钻瓜专利网。





