消息同步方法、设备及计算机可读存储介质技术

技术编号:39321267 阅读:13 留言:0更新日期:2023-11-12 16:01
本发明专利技术公开了一种消息同步方法、设备及计算机可读存储介质,属于消息队列技术领域。该方法包括:所述补偿节点从所述数据库获取对应的生产记录表和消费记录表;从所述生产记录表中筛选出满足第一特定状态的生产记录,以及从所述消费记录表中筛选出满足第二特定状态的消费记录;将所述生产记录和所述消费记录对应的异常消息发送至所述消息队列,所述消息队列将所述异常消息转发至所述消费节点。本发明专利技术通过旨在提供一种统一完整的解决方案,来保证系统内数据的一致性。统内数据的一致性。统内数据的一致性。

【技术实现步骤摘要】
消息同步方法、设备及计算机可读存储介质


[0001]本专利技术涉及消息队列
,尤其涉及消息同步方法、设备及计算机可读存储介质。

技术介绍

[0002]在业务系统中使用消息队列(Message Queue,MQ),可以实现异步通信、解耦系统、流量削峰、提高系统的可伸缩性和可靠性等效果。例如,在金融机构的中间业务定价管理系统中,“提交定价单接口”的启动审批步骤耗时较长,为优化上述接口的性能,系统引入消息队列。以便在定价单创建完成后,向消息队列发送一条定价单的审批消息,然后消息队列自动向消费节点发送该审批消息。这样,系统就只需关注生产节点的发送操作,发送完毕便可立即返回,实现异步启动审批实例,提升接口整体性能。
[0003]在使用消息队列的过程中,由于消息队列的中间件内部异常、消费节点服务宕机等原因,不可避免地出现消息丢失、消息重复消费等异常情况,进而导致业务系统的数据不一致。
[0004]在相关技术中,检测到数据不一致后,业务系统会进行消息重试,若重试仍然失败,则人工介入。然而,不同的开发人员针对上述情况的处理思路以及具体落地代码不统一,即缺乏统一完整的解决方案。
[0005]上述内容仅用于辅助理解本专利技术的技术方案,并不代表承认上述内容是现有技术。

技术实现思路

[0006]本专利技术的主要目的在于提供一种消息同步方法,旨在解决针对业务系统的数据不一致的情况,缺乏统一完整的解决方案的技术问题。
[0007]为实现上述目的,本专利技术提供一种消息同步方法,其特征在于,应用于业务审批系统,所述业务审批系统设置有消息队列,数据库,生产节点、消费节点以及补偿节点,所述消息同步方法包括以下步骤:
[0008]所述补偿节点从所述数据库获取对应的生产记录表和消费记录表;
[0009]从所述生产记录表中筛选出满足第一特定状态的生产记录,以及从所述消费记录表中筛选出满足第二特定状态的消费记录;
[0010]将所述生产记录和所述消费记录对应的异常消息发送至所述消息队列,所述消息队列将所述异常消息转发至所述消费节点。
[0011]可选地,述从所述生产记录表中筛选出满足第一特定状态的生产记录的步骤包括:
[0012]确定所述生产记录表中所有生产记录的状态类型和状态保持时长;
[0013]从所述生产记录表中筛选出所述状态类型为发送失败的生产记录;和/或
[0014]从所述生产记录表中筛选出所述状态类型为发送中,且所述状态保持时长超过最
长等待时长的生产记录;
[0015]所述从所述消费记录表中筛选出满足第二特定状态的消费记录的步骤包括:
[0016]确定所述消费记录表中所有消费记录的状态类型;
[0017]从所述消费记录表中筛选出所述状态类型为消费失败的消费记录。
[0018]可选地,所述补偿节点从所述数据库获取对应的生产记录表和消费记录表的步骤之前,包括:
[0019]所述生产节点接收到用户上传的定价单后,向所述数据库发送对应的写入指令,所述数据库基于所述写入指令,向生产记录表插入对应的生产记录,所述生产记录的状态类型为发送中;
[0020]所述生产节点将所述定价单发送至消息队列,并接收所述消息队列返回的确定信号值;
[0021]若所述确认信号值为第一信号值,则向所述数据库发送第一变更指令,所述数据库基于所述第一变更指令,将所述生产记录的状态类型变更为发送成功;
[0022]若所述确认信号值为第二信号值,则向所述数据库发送第二变更指令,所述数据库基于所述第二变更指令,将所述生产记录的状态类型变更为发送失败。
[0023]可选地,所述生产节点将所述生产记录发送至消息队列,并接收所述消息队列返回的确定信号值的步骤之前,包括:
[0024]生产节点获取消息队列的可用容量,以及生产记录表中状态类型为发送中的消费记录的发送数量;
[0025]根据所述可用容量和发送数量,计算溢出风险值;
[0026]若所述溢出风险值低于预设风险值,则执行所述生产节点将所述定价单发送至消息队列,并接收所述消息队列返回的确定信号值的步骤。
[0027]可选地,所述生产节点接收到用户上传的定价单后,向所述数据库发送对应的写入指令,所述数据库基于所述写入指令,向生产记录表插入对应的生产记录,所述生产记录的状态类型为发送中的步骤之后,包括:
[0028]确定所述生产记录的生产记录要素;
[0029]获取所述消费记录表中的所有消费记录的消费记录要素;
[0030]若存在与所述生产定价要素相同的消费定价要素,则向所述数据库发送第三变更指令,所述数据库基于所述第三变更指令,将所述生产记录的状态类型变更为无需发送。
[0031]可选地,所述补偿节点从数据库获取对应的生产记录表和消费记录表的步骤之前,包括:
[0032]所述消费节点接收到所述消息队列发送的定价单后,向数据库发送对应的写入指令,所述数据库基于所述写入指令,向消费记录表插入对应的消费记录;
[0033]所述数据库判定所述消费记录的主键是否存在冲突;
[0034]若存在冲突,则将所述消费记录的状态类型设定为重复消费;
[0035]若不存在冲突,则将所述消费记录的状态类型设定为消费中。
[0036]可选地,所述若不存在冲突,则将所述消费记录的状态类型设定为消费中的步骤之后,包括:
[0037]所述消费节点筛选出所述状态类型为消费中的消费记录,并对所述消费记录对应
的定价单执行对应的业务逻辑;
[0038]若执行业务逻辑成功,则向所述数据库发送第四变更指令,所述数据库基于所述第四变更指令,将所述消费记录的状态类型变更为消费成功,并向所述消息队列返回对应的确认信号值;
[0039]若执行业务逻辑失败,则向所述数据库发送第五变更指令,所述数据库基于所述第五变更指令,将所述消费记录的状态类型变更为消费失败,并向所述消息队列返回对应的确认信号值。
[0040]可选地,所述将所述生产记录和所述消费记录对应的异常消息发送至所述消息队列,所述消息队列将所述异常消息转发至所述消费节点的步骤之后,包括:
[0041]所述补偿节点获取总重发次数,以及各消息的单个重发次数;
[0042]若所述总重发次数超过第一预设次数,则检查数据库使用率和内存使用率;
[0043]若所述单个重发次数超过第二预设次数,则检查对应的消息格式。
[0044]此外,为实现上述目的,本专利技术还提供一种消息同步设备,所述消息同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的消息同步程序,所述消息同步程序配置为实现所述的消息同步方法的步骤。
[0045]此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有消息同步程序,所述消息同步程序被处理器执行时实现所述的消息同步方法的步骤。
[0046]在本专利技术本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息同步方法,其特征在于,应用于业务审批系统,所述业务审批系统设置有消息队列,数据库,生产节点、消费节点以及补偿节点,所述消息同步方法包括以下步骤:所述补偿节点从所述数据库获取对应的生产记录表和消费记录表;从所述生产记录表中筛选出满足第一特定状态的生产记录,以及从所述消费记录表中筛选出满足第二特定状态的消费记录;将所述生产记录和所述消费记录对应的异常消息发送至所述消息队列,所述消息队列将所述异常消息转发至所述消费节点。2.如权利要求1所述的消息同步方法,其特征在于,所述从所述生产记录表中筛选出满足第一特定状态的生产记录的步骤包括:确定所述生产记录表中所有生产记录的状态类型和状态保持时长;从所述生产记录表中筛选出所述状态类型为发送失败的生产记录;和/或从所述生产记录表中筛选出所述状态类型为发送中,且所述状态保持时长超过最长等待时长的生产记录;所述从所述消费记录表中筛选出满足第二特定状态的消费记录的步骤包括:确定所述消费记录表中所有消费记录的状态类型;从所述消费记录表中筛选出所述状态类型为消费失败的消费记录。3.如权利要求1所述的消息同步方法,其特征在于,所述补偿节点从所述数据库获取对应的生产记录表和消费记录表的步骤之前,包括:所述生产节点接收到用户上传的定价单后,向所述数据库发送对应的写入指令,所述数据库基于所述写入指令,向生产记录表插入对应的生产记录,所述生产记录的状态类型为发送中;所述生产节点将所述定价单发送至消息队列,并接收所述消息队列返回的确定信号值;若所述确认信号值为第一信号值,则向所述数据库发送第一变更指令,所述数据库基于所述第一变更指令,将所述生产记录的状态类型变更为发送成功;若所述确认信号值为第二信号值,则向所述数据库发送第二变更指令,所述数据库基于所述第二变更指令,将所述生产记录的状态类型变更为发送失败。4.如权利要求3所述的消息同步方法,其特征在于,所述生产节点将所述生产记录发送至消息队列,并接收所述消息队列返回的确定信号值的步骤之前,包括:生产节点获取消息队列的可用容量,以及生产记录表中状态类型为发送中的消费记录的发送数量;根据所述可用容量和发送数量,计算溢出风险值;若所述溢出风险值低于预设风险值,则执行所述生产节点将所述定价单发送至消息队列,并接收所述消息队列返回的确定信号值的步骤。5.如权利要求3所述的消息同步方法,其特征在于,所述生产节点接收到用户上传的定价单后,向所述数据库发送对应的写入指令,所述数据...

【专利技术属性】
技术研发人员:刘良刘国双唐宽
申请(专利权)人:招商银行股份有限公司
类型:发明
国别省市:

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

1