一种消息幂等处理、生成和消费方法、装置和计算机设备制造方法及图纸

技术编号:33452783 阅读:12 留言:0更新日期:2022-05-19 00:36
本文提供了一种消息幂等处理、生成和消费方法、装置和计算机设备,涉及大数据数据分析技术领域,其中消息幂等处理方法包括接收消费者对消息的消费请求;解析消费请求,获得消息的唯一标识符和业务版本号;根据唯一标识符,查询redis缓存中预先存储的与消息相对应的目标版本号;判断业务版本号与目标版本号是否一致;当一致时,确定消息为未消费并反馈给消费者,以使消费者获取消息的业务代码并消费消息;并将目标版本号由初值改为终值。本文利用消息的版本号来表征消息的消费状态,能够避免状态流转失败甚至状态逆流转的问题,从而避免了消息不幂等的情况;采用redis缓存能够在高并发场景下,降低系统I/O,提高系统吞吐量。提高系统吞吐量。提高系统吞吐量。

【技术实现步骤摘要】
一种消息幂等处理、生成和消费方法、装置和计算机设备


[0001]本专利技术涉及大数据数据分析
,尤其是一种消息幂等处理、生成和消费方法、装置和计算机设备。

技术介绍

[0002]消息中间件能够为分布式应用之间提供高效、可靠的数据传输服务,但其为了保证消息的可达性所采用的超时、重传或确认机制,可能会导致同一条消息推送给多个消息服务端或业务方。而分布式系统中的不同服务端或业务方在消费消息时是相互独立互无感知的,因此无法判断该条消息是否已经被他人消费过或者正在消费,导致同一条消息被多次消费,最终造成损失。
[0003]因此,本文旨在提供一种消息幂等处理、生成和消费方法、装置和计算机设备,以解决现有技术中存在的重复消费消息的问题。

技术实现思路

[0004]针对现有技术的上述问题,本文的目的在于,提供一种消息幂等处理、生成和消费方法、装置和计算机设备,以解决现有技术中消息被重复消费的问题。
[0005]为了解决上述技术问题,本文的具体技术方案如下:
[0006]第一方面,本文提供一种消息幂等处理方法,包括:
[0007]接收消费者对消息的消费请求;
[0008]解析所述消费请求,获得与所述消息相对应的唯一标识符和业务版本号;
[0009]根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号;
[0010]判断所述业务版本号与所述目标版本号是否一致;
[0011]当所述业务版本号与所述目标版本号一致时,确定所述消息为未消费并反馈给消费者,以使所述消费者获取所述消息的业务代码并消费所述消息;并将所述目标版本号由初值改为终值。
[0012]第二方面,本文还提供一种消息幂等处理装置,包括:
[0013]第一接收模块,用于接收消费者对消息的消费请求;
[0014]解析模块,用于解析所述消费请求,获得与所述消息相对应的唯一标识符和业务版本号;
[0015]查询模块,用于根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号;
[0016]判断模块,用于判断所述业务版本号与所述目标版本号是否一致;
[0017]执行模块,用于当所述业务版本号与所述目标版本号一致时,确定所述消息为未消费并反馈给消费者,以使所述消费者获取所述消息的业务代码并消费所述消息;并将所述目标版本号由初值改为终值。
[0018]进一步地,所述消息幂等处理装置还包括判断模块;
[0019]所述判断模块用于在根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号之前,判断是否成功获取所述redis缓存的文件锁;
[0020]若是,则查询所述redis缓存中预先存储的与所述消息相对应的目标版本号;
[0021]若否,则确定所述消费者不具备对所述消息的消费资格。
[0022]第三方面,本文提供一种消息生成方法,包括:
[0023]生成消息,所述消息包括业务代码和与所述消息相对应的唯一标识符和业务版本号,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;
[0024]将所述消息存储于消息中间件中,以使所述消息中间件将所述消息推送给消费者;
[0025]将所述唯一标识符同步存储于redis缓存中,以及将所述业务版本号同步存储于redis缓存中作为目标版本号。
[0026]第四方面,本文还提供一种消息生成装置,包括:
[0027]消息生成模块,用于生成消息,所述消息包括业务代码和与所述消息相对应的唯一标识符和业务版本号,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;
[0028]存储模块,用于将所述消息存储于消息中间件中,以使所述消息中间件将所述消息推送给消费者;
[0029]同步模块,用于将所述唯一标识符同步存储于redis缓存中,以及将所述业务版本号同步存储于redis缓存中作为目标版本号。
[0030]第五方面,本文提供一种消息消费方法,包括:
[0031]获取消息中间件推送的消息,所述消息包括与所述消息相对应的唯一标识符和业务版本号;
[0032]生成对所述消息的消费请求并发送给消息幂等处理装置,所述消费请求包括所述唯一标识符和所述业务版本号,以使所述消息幂等处理装置根据所述唯一标识符和所述业务版本号反馈所述消息的消费状态;
[0033]接收所述消息幂等处理装置返回的所述消息的消费状态;
[0034]当所述消费状态为未消费时,基于所述唯一标识符查询所述消息中间件以获取所述消息的业务代码,并执行所述业务代码以消费所述消息。
[0035]第六方面,本文还提供一种消息消费装置,包括:
[0036]获取模块,用于获取消息中间件推送的消息,所述消息包括与所述消息相对应的唯一标识符和业务版本号;
[0037]消费请求生成模块,用于生成对所述消息的消费请求并发送给消息幂等处理装置,所述消费请求包括所述唯一标识符和所述业务版本号,以使所述消息幂等处理装置根据所述唯一标识符和所述业务版本号反馈所述消息的消费状态;
[0038]第二接收模块,用于接收所述消息幂等处理装置返回的所述消息的消费状态;
[0039]消费模块,用于当所述消费状态为未消费时,基于所述唯一标识符查询所述消息中间件以获取所述消息的业务代码,并执行所述业务代码以消费所述消息。
[0040]第七方面,本文提供一种消息处理方法,包括:
[0041]消息生成装置生成消息并将所述消息存储于消息中间件中,以及将所述消息的唯一标识符和业务版本号同步存储于redis缓存中,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;
[0042]消息消费装置接收所述消息中间件推送的消息,生成对所述消息的消费请求发送给消息幂等处理装置,所述消费请求包括所述唯一标识符和所述业务版本号;
[0043]消息幂等处理装置解析所述消费请求,根据解析得到的所述唯一标识符和所述业务版本号确定所述消息的消费状态并反馈给所述消息消费装置,以使所述消息消费装置在所述消费状态为未消费时,根据所述唯一标识符查询所述消息中间件获取并执行所述消息的业务代码以消费所述消息。
[0044]第八方面,本文还提供一种消息处理系统,包括:
[0045]消息生成装置,用于生成消息并将所述消息存储于消息中间件中,以及将所述消息的唯一标识符和业务版本号同步存储于redis缓存中,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;
[0046]消息消费装置,用于接收所述消息中间件推送的消息,生成对所述消息的消费请求发送给消息幂等处理装置,所述消费请求包括所述唯一标识符和所述业务版本号;
[0047]消息幂等处理装置,用于解析所述消费请求,根据解析得到的所述唯一标识符和所述业务版本号本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息幂等处理方法,其特征在于,包括:接收消费者对消息的消费请求;解析所述消费请求,获得与所述消息相对应的唯一标识符和业务版本号;根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号;判断所述业务版本号与所述目标版本号是否一致;当所述业务版本号与所述目标版本号一致时,确定所述消息为未消费并反馈给消费者,以使所述消费者获取所述消息的业务代码并消费所述消息;并将所述目标版本号由初值改为终值。2.根据权利要求1所述的方法,其特征在于,所述根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号之前,所述方法还包括:判断是否成功获取所述redis缓存的文件锁;若是,则查询所述redis缓存中预先存储的与所述消息相对应的目标版本号;若否,则确定所述消费者不具备对所述消息的消费资格。3.根据权利要求1所述的方法,其特征在于,所述根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号之前,所述方法还包括:解析所述消费请求,获得与所述消息相对应的过期时间;根据所述过期时间和当前时间戳判断所述消息是否过期;若所述消息未过期,则查询所述redis缓存中预先存储的与所述消息相对应的目标版本号;若所述消息已过期,则发送消息过期提醒给所述消息的生产者。4.根据权利要求3所述的方法,其特征在于,若所述消息已过期,所述方法还包括:删除所述redis缓存中存储的所述消息的所述唯一标识符和所述目标版本号。5.根据权利要求3所述的方法,其特征在于,所述若所述消息未过期,则查询所述redis缓存中预先存储的与所述消息相对应的目标版本号,进一步包括:根据所述唯一标识符,查询所述redis缓存中是否存储有与所述消息相对应的唯一标识符和目标版本号;若不存在,则将解析得到的所述唯一标识符同步至所述redis缓存中,以及将所述业务版本号同步至所述redis缓存中作为所述目标版本号。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述业务版本号与所述目标版本号不一致时,确定所述消息为已消费并生成消费异常提醒以反馈给所述消费者和所述消息的生产者。7.一种消息幂等处理装置,其特征在于,包括:第一接收模块,用于接收消费者对消息的消费请求;解析模块,用于解析所述消费请求,获得与所述消息相对应的唯一标识符和业务版本号;查询模块,用于根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号;判断模块,用于判断所述业务版本号与所述目标版本号是否一致;执行模块,用于当所述业务版本号与所述目标版本号一致时,确定所述消息为未消费
并反馈给消费者,以使所述消费者获取所述消息的业务代码并消费所述消息;并将所述目标版本号由初值改为终值。8.根据权利要求7所述的装置,其特征在于,所述装置还包括判断模块;所述判断模块用于在根据所述唯一标识符,查询redis缓存中预先存储的与所述消息相对应的目标版本号之前,判断是否成功获取所述redis缓存的文件锁;若是,则查询所述redis缓存中预先存储的与所述消息相对应的目标版本号;若否,则确定所述消费者不具备对所述消息的消费资格。9.一种消息生成方法,其特征在于,包括:生成消息,所述消息包括业务代码和与所述消息相对应的唯一标识符和业务版本号,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;将所述消息存储于消息中间件中,以使所述消息中间件将所述消息推送给消费者;将所述唯一标识符同步存储于redis缓存中,以及将所述业务版本号同步存储于redis缓存中作为目标版本号。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:接收消费者反馈的业务代码异常信息;根据所述业务代码异常信息,调度备份在数据库中的与所述业务代码相对应的原始业务数据,以根据所述原始业务数据组装得到所述业务代码并发送至所述消息中间件中。11.一种消息生成装置,其特征在于,包括:消息生成模块,用于生成消息,所述消息包括业务代码和与所述消息相对应的唯一标识符和业务版本号,所述唯一标识符用于唯一确定所述消息,所述业务版本号用于标记所述消息的消费状态;存储模块,用于将所述消息存储于消息中间件中,以使所述消息中间件将所述消息推送给消费者;同步模块,用于将所述唯一标识符同步存储于redis缓存中,以及将所述业务版本号同步存储于redis缓存中作为目标版本号。12.一种消息消费方法,其特征在于,包括:获取消息中间件推送的消息,所述消息包括与所述消息相对应的唯一标识符和业务版本号;生成对所述消息的消费请求并发送给消息幂等处理装置,所述消费请求包括所述唯一标识符和所述业务版本号,以使所述消息幂...

【专利技术属性】
技术研发人员:邓清文
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:

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

1