报文幂等方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:38496664 阅读:11 留言:0更新日期:2023-08-15 17:06
本申请涉及一种报文幂等方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:当幂等拦截器接收到报文请求时,获取所述报文请求对应的特定表达式;依据所述特定表达式从所述报文请求中获取指定字段,并将所述指定字段组合为幂等键;将所述报文请求对应的幂等组别与所述幂等键进行拼接,得到缓存键,并查询与所述缓存键对应的幂等信息;若所述幂等信息的状态为完成,则获取对应的报文处理模式;依据所述报文处理模式对所述幂等信息进行处理,得到响应报文。采用本方法能够实现动态的报文幂等,提升报文幂等的灵活性。提升报文幂等的灵活性。提升报文幂等的灵活性。

【技术实现步骤摘要】
报文幂等方法、装置、计算机设备和存储介质


[0001]本申请涉及计算机
,特别是涉及一种报文幂等方法、装置、计算机设备和存储介质。

技术介绍

[0002]幂等性,指的是对于用户同一操作的一次请求和多次请求,结果应当保持一致的性质,例如,针对同一笔订单的支付操作,即使收到了多次报文请求,也只能进行一次扣款,并对报文请求响应交易的实际结果。对于金融和支付领域的系统来说,做好交易的幂等处理,防止因报文多次提交而引起的重复交易十分重要,否则易引起客户预期之外的资金变动,造成纠纷,目前现今报文幂等的方式,存在模式固定,导致报文幂等的灵活性不足问题。

技术实现思路

[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]生成模块,用于若未查询到与所述缓存键对应的幂等信息,则基于所述缓存键对所述报文请求进行加锁处理;若加锁成功,则进入所述报文请求对应的业务流程;在所述业务流程完成后,根据对应的报文处理模式生成所述幂等信息,并将所述幂等信息的状态设置为完成。
[0047]在其中一个实施例中,所述幂等信息为第一幂等信息或第二幂等信息;所述生成模块还用于:若所述报文处理模式为报文快照模式,则生成所述第一幂等信息;所述第一幂等信息包括序列化的响应报文;若所述报文处理模式为报文备忘录模式,则生成所述第二幂等信息;将所述第一幂等信息或所述第二幂等信息的状态设置为完成,并建立所述缓存键与所述第一幂等信息或所述第二幂等信息的第一映射关系;
[0048]在其中一个实施例中,所述拼接与查询模块还用于依据所述第一映射关系,查询与所述缓存键对应的第一幂等信息或第二幂等信息。
[0049]在其中一个实施例中,所述拼接与查询模块还用于若加锁失败,则进入等待轮询流程;若当前请求等待数量大于关键等待阈值,则将最大轮询次数置为第一预设值,并依据所述最大轮询次数对所述幂等信息进行查询;若所述当前请求等待数量不大于所述关键等待阈值,则将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种报文幂等方法,其特征在于,所述方法包括:当幂等拦截器接收到报文请求时,获取所述报文请求对应的特定表达式;依据所述特定表达式从所述报文请求中获取指定字段,并将所述指定字段组合为幂等键;将所述报文请求对应的幂等组别与所述幂等键进行拼接,得到缓存键,并查询与所述缓存键对应的幂等信息;若所述幂等信息的状态为完成,则获取对应的报文处理模式;依据所述报文处理模式对所述幂等信息进行处理,得到响应报文。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取幂等方法配置注解和幂等参数指定注解;所述幂等方法配置注解包括可配置的所述特定表达式、可配置的所述幂等组别和可配置的所述报文处理模式;所述幂等参数指定注解用于对所述幂等方法配置注解中的参数进行标记;将所述幂等拦截器附加于接口;在所述接口上标记所述幂等方法配置注解,在所述接口的形式参数上标记所述幂等参数指定注解。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若未查询到与所述缓存键对应的幂等信息,则基于所述缓存键对所述报文请求进行加锁处理;若加锁成功,则进入所述报文请求对应的业务流程;在所述业务流程完成后,根据对应的报文处理模式生成所述幂等信息,并将所述幂等信息的状态设置为完成。4.根据权利要求3所述的方法,其特征在于,所述幂等信息为第一幂等信息或第二幂等信息;所述根据对应的报文处理模式生成所述幂等信息,并将所述幂等信息的状态设置为完成包括:若所述报文处理模式为报文快照模式,则生成所述第一幂等信息;所述第一幂等信息包括序列化的响应报文;若所述报文处理模式为报文备忘录模式,则生成所述第二幂等信息;将所述第一幂等信息或所述第二幂等信息的状态设置为完成,并建立所述缓存键与所述第一幂等信息或所述第二幂等信息的第一映射关系;所述查询与所述缓存键对应的幂等信息包括:依据所述第一映射关系,查询与所述缓存键对应的第一幂等信息或第二幂等信息。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:若加锁失败,则进入等待轮询流程;所述...

【专利技术属性】
技术研发人员:林燊黄明建孙旺安琦陈天盛张波
申请(专利权)人:兴业数字金融服务上海股份有限公司
类型:发明
国别省市:

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

1