一种基于动态配置的异步通知方法及系统
文献发布时间:2023-06-19 09:27:35
技术领域
本发明涉及计算机技术领域,更具体地说,涉及到一种基于动态配置的异步通知方法及系统。
背景技术
随着支付业务的发展,支付网关的渠道的增多以及交易量成倍的增长,导致各渠道的异步通知数量也成倍的增加,现有支付网关无法应对因为网络问题、处理通知错误问题等造成的通知丢失问题,引起交易状态不能及时更新、长款、甚至投诉。并且针对这些问题,只能依赖渠道方的重复通知,但是有些渠道只会通知一次,如果出现上述问题,支付网关是无法解决的。
本发明内容
为了克服现有技术的不足,本发明提供一种基于动态配置的异步通知方法如何提高消息送达的成功率以及减少消息丢失的问题。
本发明解决其技术问题所采用的技术方案是:一种基于动态配置的异步通知方法,包括以下步骤:
步骤一:订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存;
步骤二:获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统;
步骤三:判断交易系统返回结果,实时更新数据库。
具体地,实时更新通知服务集群中的渠道重试配置的缓存,所述步骤包括:
根据不同的渠道,重试次数以及对应的重试间隔一一对应。
具体地,获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统,所述步骤具体包括:
遍历查询可配置的数据;
当取出数据之后,一次性更新所有查询到的数据的乐观锁,并加入乐观锁标记;
切割数据,多线程并发异步查询所有查询到的数据。
具体地,遍历查询可配置的数据满足以下条件,具体包括:
当发送状态为失败状态;
当前时间大于下一次重试时间;
数据库乐观锁标记flag=0;
剩余重试次数大于0次。
具体地,判断交易系统返回结果,所述步骤具体包括:
当发送消息成功,则更新消息为成功消息;
当发送消息失败,则计算并更新下次重试时间。
优选地,当发送消息成功,则更新消息为成功消息之后,所述步骤还包括:
更新剩余重试次数,当前剩余重试次数减1;
更新发送状态为成功状态以及成功的时间;
更新数据库乐观锁标记flag=0。
具体地,当发送消息失败,则计算并更新下次重试时间,所述步骤具体包括:
获取对应失败记录的所属渠道重试配置数据;
通过当前失败消息的剩余重试次数1以及当期时间计算出下一次重试时间。
优选地,通过当前失败消息的剩余重试次数1以及当期时间计算出下一次重试时间之后,所述步骤还包括:
更新消息的下次重试时间以及剩余重试次数0次;
更新数据库乐观锁标记flag=0。
优选地,当剩余充重试次数剩余0次,更新发送状态为重试完成状态。
一种基于动态配置的异步通知系统,所述系统包括:
订阅单元,用于订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存;
获取单元,用于获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统;
判断单元,用于判断交易系统返回结果,实时更新数据库。
本发明的有益效果是:订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存,获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统,判断交易系统返回结果,实时更新数据库,从而提高了消息送达成功率以及减少了消息丢失问题。
附图说明
图1是一种基于动态配置的异步通知方法的流程示意图。
图2是一种基于动态配置的异步通知系统的功能模块图。
图3是一种基于动态配置的异步通知系统的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体实施例对本发明的具体实现进行详细描述:
实施例一:
图1示出了本发明实施例一提供的一种基于动态配置的异步通知方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
在步骤S101中,订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存;
具体地,实时更新通知服务集群中的渠道重试配置的缓存,所述步骤包括:
根据不同的渠道,重试次数以及对应的重试间隔一一对应。
在步骤S102中,获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统;
具体地,获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统,所述步骤具体包括:
遍历查询可配置的数据;
当取出数据之后,一次性更新所有查询到的数据的乐观锁,并加入乐观锁标记;
切割数据,多线程并发异步查询所有查询到的数据。
具体地,遍历查询可配置的数据满足以下条件,具体包括:
当发送状态为失败状态;
当前时间大于下一次重试时间;
数据库乐观锁标记flag=0;
剩余重试次数大于0次。
在步骤S103中,判断交易系统返回结果,实时更新数据库。
具体地,判断交易系统返回结果,所述步骤具体包括:
当发送消息成功,则更新消息为成功消息;
当发送消息失败,则计算并更新下次重试时间。
优选地,当发送消息成功,则更新消息为成功消息之后,所述步骤还包括:
更新剩余重试次数,当前剩余重试次数减1;
更新发送状态为成功状态以及成功的时间;
更新数据库乐观锁标记flag=0。
具体地,当发送消息失败,则计算并更新下次重试时间,所述步骤具体包括:
获取对应失败记录的所属渠道重试配置数据;
通过当前失败消息的剩余重试次数1以及当期时间计算出下一次重试时间。
优选地,通过当前失败消息的剩余重试次数1以及当期时间计算出下一次重试时间之后,所述步骤还包括:
更新消息的下次重试时间以及剩余重试次数0次;
更新数据库乐观锁标记flag=0。
优选地,当剩余充重试次数剩余0次,更新发送状态为重试完成状态。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
实施例二:
图2示出了本发明实施例二提供的基于前置分布式数据库的海量数据查询一种基于动态配置的异步通知系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
订阅单元201,用于订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存;
获取单元202,用于获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统;
判断单元203,用于判断交易系统返回结果,实时更新数据库。
在本申请实施例中,订阅渠道重试配置的消息队列MQ,且实时更新通知服务集群中的渠道重试配置的缓存,获取到达重试时间的平台通知失败消息,并更新乐观锁,根据不同的渠道通知交易系统,判断交易系统返回结果,实时更新数据库,从而提高了消息送达成功率以及减少了消息丢失问题;各单元的具体实施方式可参考实施例一的描述,在此不再赘述。
实施例三:
图3示出了本发明实施例三提供的一种基于动态配置的异步通知系统的流程图,为了便于说明,仅示出了与本发明实施例相关的部分,其中包括:
步骤一:订阅渠道重试配置的消息队列MQ,实时更新通知服务集群中的渠道重试配置的缓存,针对不同的渠道重试策略也不同;比如:
1、渠道A:重试次数3次,每次间隔30秒,120秒,1200秒;
2、渠道B:重试次数5次,每次间隔30秒,60秒,120秒,300秒,1800秒;
步骤二:获取已经到达重试时间的平台通知失败消息,更新乐观锁,并根据渠道通知交易系统;
遍历每次查询100条(可配置)数据,条件:
发送状态为失败状态;
当前时间大于下一次重试时间,加入下一次重试时间主要是防止未到发送时间被重复查询出来;
数据库乐观锁标记`flag`=0;
剩余重试次数大于0次
2、取出数据成功后一次性更新所有查询到的数据的乐观锁标记flag=1,加入乐观锁标记防止集群其它服务器重复取出消费;
3、切割数据,多线程并发异步处理查询的100条数据,多线程任务数可根据服务器的配置来配置,默认开启5个线程任务同时执行,尽可能快地通知交易系统,提高通知效率;
步骤三:判断交易系统返回结果,实时更新数据库信息;如果发送成功则更新消息成功信息;如果失败则计算并更新下次重试时间;
返回成功(同时更新):
更新剩余重试次数,当前剩余重试次数减1;
更新发送状态为成功,成功的时间;
更新数据库乐观锁标记`flag`=0;
返回失败:
1、获取对应失败记录的所属渠道重试配置数据,假设渠道B的重试次数为5,重试时间间隔为30秒,60秒,120秒,300秒,1800秒,数组为interval;
2、通过当前失败消息的剩余重试次数1以及当前时间(now)计算出下一次重试时间
计算当前时间间隔如:interval[5-1]=1800秒
计算下一次重试时间:data=1800秒+now
计算剩余次数:1–1=0
更新消息的下一次重试时间data、剩余重试次数0次;
同时更新数据库乐观锁标记`flag`=0;
如果剩余重试次数剩余0次,更新发送状态为重试完成状态;
注:剩余重试次数最小为0次。
在本发明实施例中,一种基于动态配置的异步通知系统可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉技术领域的人员在本发明揭露的技术范围内,可轻易想到变化或者替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 一种基于动态配置的异步通知方法及系统
- 一种异步通知方法及系统