掌桥专利:专业的专利平台
掌桥专利
首页

一种应用于高并发场景下生成唯一流水号的方法

文献发布时间:2023-06-19 18:37:28


一种应用于高并发场景下生成唯一流水号的方法

技术领域

本发明涉及计算机技术领域,特别涉及一种应用于高并发场景下生成唯一流水号的方法。

背景技术

在一些交易场景,比如批转联交易过程中,需要系统生成唯一的流水号,去保障交易的正常进行,目前常用的是采用组合的方式,比如时间戳加上随机数,截取对应的流水号所需要的长度。在高并发情况下,时间戳以及随机数的组合会生成重复的情况,导致影响交易的正常进行。

因此有必要提供一种应用于高并发场景下生成唯一流水号的方法,以避免流水号重复,保证交易的正常以及系统的运行。

发明内容

本发明的目的在于提供一种应用于高并发场景下生成唯一流水号的方法,以避免流水号重复,保证交易的正常以及系统的运行。

为了解决现有技术中存在的问题,本发明提供了一种应用于高并发场景下生成唯一流水号的方法,包括以下步骤:

解析收到的交易文件,形成字段;

根据字段组装形成金融交易类请求报文,所述请求报文内包含流水号;

判断交易返回的39域,若为94、98或01,则更新所述请求报文内的流水号,并重新发送所述请求报文;若为00、11或A5,则交易成功;

判断重新发送所述请求报文的结果,若交易成功,则不再继续重新发送所述请求报文;若交易失败,则继续重新发送所述请求报文,并更新所述请求报文内的流水号,直至重新发送所述请求报文的次数达到预设上限;

若重新发送所述请求报文的次数达到预设上限时,交易还未成功,则为交易失败。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,

若39域为94,重新发送所述请求报文的次数的预设上限为3次;

若39域为98或01,重新发送所述请求报文的次数的预设上限为1次。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,交易返回的3域根据实际情况更新。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,组装形成金融交易类请求报文之前,还包括以下步骤:

校验各字段是否符合要求。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,校验各字段是否符合要求的方式包括:

校验各个字段的大小以及长度。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,得到符合要求的字段之后,组装形成金融交易类请求报文之前,还包括以下步骤:

判断本次交易是否为重复交易,如果是重复交易,则反馈交易失败,如果不是重复交易,则组装形成金融交易类请求报文。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,所述请求报文内还包含交易类型、商户类型、终端类型以及客户姓名。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,若交易成功,则生成交易成功反馈文件,若交易失败,则生成交易失败反馈文件。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,存储反馈文件。

在本发明所提供的应用于高并发场景下生成唯一流水号的方法中,通过重复判断交易返回的39域的内容,从而判断交易情况,在每次重新发送请求报文时,均更新请求报文内的流水号,从而可以避免流水号重复,并保证了交易的正常以及系统的运行。

附图说明

图1为本发明实施例提供的生成唯一流水号的方法的流程图。

具体实施方式

下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

在下文中,如果本文所述的方法包括一系列步骤,本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。

在一些交易场景,比如批转联交易过程中,需要系统生成唯一的流水号,去保障交易的正常进行,目前常用的是采用组合的方式,比如时间戳加上随机数,截取对应的流水号所需要的长度。在高并发情况下,时间戳以及随机数的组合会生成重复的情况,导致影响交易的正常进行。

为了解决现有技术中存在的问题,本发明提供了一种应用于高并发场景下生成唯一流水号的方法,如图1所示,所述方法包括以下步骤:

解析收到的交易文件,形成字段;

根据字段组装形成金融交易类请求报文,所述请求报文内包含流水号;

判断交易返回的39域,若为94、98或01,则更新所述请求报文内的流水号,并重新发送所述请求报文;若为00、11或A5,则交易成功;

判断重新发送所述请求报文的结果,若交易成功,则不再继续重新发送所述请求报文;若交易失败,则继续重新发送所述请求报文,并更新所述请求报文内的流水号,直至重新发送所述请求报文的次数达到预设上限;

若重新发送所述请求报文的次数达到预设上限时,交易还未成功,则为交易失败。

进一步的,若39域为94,重新发送所述请求报文的次数的预设上限为3次;若39域为98或01,重新发送所述请求报文的次数的预设上限为1次。

在一个实施例中,当批转联交易进来时,该类交易假设流水号生成规则为:长度为6位,则前3位获取当前时间戳的后3位,后3位获取一个3位的随机数。本发明中若更新所述请求报文内的流水号,则同时更新时间戳和随机数,得到新的流水号。

通常的,交易返回的3域根据实际情况更新。例如最初3域为810000,为存款,组装完毕,进行金融交易的发送;如果在39域返回不是交易成功时,则会超时,此时进行发送确认交易,然后根据39域的结果重新生成新的流水号,同时交易类型为确认交易(即3域更新为210000),组装完毕发送交易,如果交易仍超时,则继续进行同样的处理。

优选的,组装形成金融交易类请求报文之前,还包括以下步骤:校验各字段是否符合要求。校验各字段是否符合要求的方式包括:校验各个字段的大小以及长度。

进一步的,得到符合要求的字段之后,组装形成金融交易类请求报文之前,还包括以下步骤:判断本次交易是否为重复交易,如果是重复交易,则反馈交易失败,如果不是重复交易,则组装形成金融交易类请求报文。

通常的,所述请求报文内还包含交易类型、商户类型、终端类型以及客户姓名。

可选的,在所述应用于高并发场景下生成唯一流水号的方法中,若交易成功,则生成交易成功反馈文件,若交易失败,则生成交易失败反馈文件,最后存储反馈文件。

综上,在本发明所提供的应用于高并发场景下生成唯一流水号的方法中,通过重复判断交易返回的39域的内容,从而判断交易情况,在每次重新发送请求报文时,均更新请求报文内的流水号,从而可以避免流水号重复,并保证了交易的正常以及系统的运行。

上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。

技术分类

06120115631215