技术新讯 > 电子通信装置的制造及其应用技术 > 报文时序控制方法及装置与流程  >  正文

报文时序控制方法及装置与流程

  • 国知局
  • 2024-10-15 10:05:11

本技术涉及数据处理,尤其涉及报文时序控制方法及装置。

背景技术:

1、票据作为一种具有多种业务要素的介质,存在复杂的内部处理过程和对外交互逻辑。基于同一票据可能会产生多种业务报文,同一票据产生的业务报文需按照业务逻辑的顺序来处理。但实际生产中,经常出现接收到的业务报文顺序混乱的情况,系统会先处理先接收到的业务报文,这样并未按照业务逻辑的顺序来处理业务报文,会导致当前票据的状态异常。目前对于此种情况的处理方式是,结合经验的已知的乱序场景,在业务报文处理时增加了对乱序的判断,当后序业务报文被提前处理,且满足乱序的处理结果时,前序业务报文的逻辑中会加入特殊处理,如回滚状态或者插入要素等。

2、上述处理方式,不是一个体系化的解决方案,是一种经验集合,由于增加了额外的乱序业务报文的判断以及逻辑处理,导致数据库的访问次数较多,内部逻辑的复杂度也较高,从而增加了交易耗时和系统开销。

3、因此,目前亟需一种方案,用以提高对乱序业务报文的处理效率。

技术实现思路

1、本技术提供的报文时序控制方法及装置,用以提高对乱序业务报文的处理效率。

2、第一方面,本技术提供一种报文时序控制方法,应用于客户端,该方法包括:获取业务报文;将所述业务报文发送至服务端;接收所述服务端基于所述业务报文的查询结果;所述查询结果表征所述业务报文的前序业务报文是否被处理;若所述业务报文的前序业务报文已被处理,则将所述业务报文的状态修改为第一状态;否则,将所述业务报文的状态修改为第二状态;对第一状态的业务报文进行相应的业务处理。

3、上述技术方案中,客户端模拟一个业务不敏感的报文驱动,不间断的将收到的业务报文法发往服务端,服务端只专注于查询业务报文的前序业务报文是否已被处理,无需冗余的场景判断和业务逻辑修正,两者交互协作,可以避免业务报文处理顺序混乱的问题,并且对乱序业务报文的处理效率较高。

4、在一种可能的设计中,新获取的业务报文的状态为所述第二状态;所述将所述业务报文发送至服务端,包括:将所述第二状态的业务报文发送至服务端,并将所述业务报文的状态修改为第三状态;所述第三状态表征所述业务报文在所述服务端处理。

5、上述技术方案中,将已发送至服务端的业务报文的状态修改为第三状态,以避免高并发下,将一个业务报文发送至多个服务端重复处理的情况发生。

6、在一种可能的设计中,所述将所述业务报文的状态修改为第二状态之后,还包括:每设定间隔时间,重新将所述业务报文发送至服务端,直至所述业务报文的状态被修改为第一状态或达到重试上限;所述设定间隔时间根据重试次数确定;将达到所述重试上限的业务报文的状态修改为第四状态;所述第四状态表征所述业务报文异常。

7、上述技术方案中,将第二状态的业务报文重新发送至服务端的间隔时间受到重试次数的影响。由于重发次数越多,该报文的状态发生变化的可能性越小(其前序报文由未被处理转为已被处理的可能性越小),因此,重发次数越多,重发的间隔时间越长,以避免计算资源的浪费。

8、在一种可能的设计中,所述将所述业务报文发送至服务端之前,还包括:根据所述业务报文的种类和/或业务场景,基于业务处理逻辑确定所述业务报文是否存在前序业务报文;所述将所述业务报文发送至服务端,包括:将存在前序业务报文的业务报文发送至服务端。

9、上述技术方案中,在将业务报文发送至服务端之前,判断该业务报文是否存在前序报文,仅将存在前序报文的业务报文发送至服务端,节省了服务端向数据库查询的次数,提高数据库的查询效率。

10、第二方面,本技术提供另一种报文时序控制方法,应用于服务端,该方法包括:接收客户端发送的业务报文;确定所述业务报文的前序业务报文是否被处理;若被处理,则返回给所述客户端第一标识,所述第一标识表征所述业务报文的前序业务报文被处理;否则;返回给所述客户端第二标识,所述第二标识表征所述业务报文的前序业务报文未被处理。

11、上述技术方案中,客户端模拟一个业务不敏感的报文驱动,不间断的将收到的业务报文法发往服务端,服务端只专注于基查询业务报文的前序业务报文是否已被处理于业务报文的查询结果,无需冗余的场景判断和业务逻辑修正。服务端每次查询时只查询一次数据库,即可做出正确判断反馈,代码入侵极小,数据库查询效率高,不会存在冗余逻辑,可以避免业务报文处理顺序混乱的问题,并且对乱序业务报文的处理效率较高。

12、在一种可能的设计中,所述业务报文的前序报文与所述业务报文具有同一报文标识号,所述确定所述业务报文的前序业务报文是否被处理,包括:获取所述业务报文中记录的报文标识号;查询数据库中是否存在所述报文标识号对应的前序报文;若存在,则表明所述业务报文的前序业务报文已被处理;若不存在,则表明所述业务报文的前序报文未被处理。

13、上述技术方案中,服务端通过报文标识号只查询一次数据库,便可确定是否存在报文乱序处理的问题,即判断出业务报文的前序报文是否被处理,代码入侵极小,数据库查询效率高,不会存在冗余逻辑,可以避免业务报文处理顺序混乱的问题。

14、第三方面,本技术实施例提供一种报文时序控制装置,该装置包括:

15、收发模块,用于获取业务报文;

16、收发模块,用于将所述业务报文发送至服务端;

17、收发模块,还用于接收所述服务端基于所述业务报文的查询结果;所述查询结果表征所述业务报文的前序业务报文是否被处理;

18、处理模块,用于若所述业务报文的前序业务报文已被处理,则将所述业务报文的状态修改为第一状态;否则,将所述业务报文的状态修改为第二状态;

19、处理模块,还用于对第一状态的业务报文进行相应的业务处理。

20、在一种可能的设计中,新获取的业务报文的状态为所述第二状态;所述收发模块在所述将所述业务报文发送至服务端时,具体用于将所述第二状态的业务报文发送至服务端,并将所述业务报文的状态修改为第三状态;所述第三状态表征所述业务报文在所述服务端处理。

21、在一种可能的设计中,所述将所述业务报文的状态修改为第二状态之后,所述处理模块,还用于每设定间隔时间,重新将所述业务报文发送至服务端,直至所述业务报文的状态被修改为第一状态或达到重试上限;所述设定间隔时间根据重试次数确定;将达到所述重试上限的业务报文的状态修改为第四状态;所述第四状态表征所述业务报文异常。

22、在一种可能的设计中,所述将所述业务报文发送至服务端之前,所述处理模块还用于根据所述业务报文的种类和/或业务场景,基于业务处理逻辑确定所述业务报文是否存在前序业务报文;所述收发模块将所述业务报文发送至服务端时,具体用于将存在前序业务报文的业务报文发送至服务端。

23、第四方面,本技术实施例提供另一种报文时序控制装置,该装置包括:

24、收发模块,用于接收客户端发送的业务报文;

25、处理模块,用于确定所述业务报文的前序业务报文是否被处理;若被处理,则返回给所述客户端第一标识,所述第一标识表征所述业务报文的前序业务报文被处理;否则;返回给所述客户端第二标识,所述第二标识表征所述业务报文的前序业务报文未被处理。

26、在一种可能的设计中,所述业务报文的前序报文与所述业务报文具有同一报文标识号,所述处理模块在确定所述业务报文的前序业务报文是否被处理时,具体用于获取所述业务报文中记录的报文标识号;查询数据库中是否存在所述报文标识号对应的前序报文;若存在,则表明所述业务报文的前序业务报文已被处理;若不存在,则表明所述业务报文的前序报文未被处理。

27、第五方面,本技术实施例还提供一种计算设备,包括:

28、存储器,用于存储程序指令;

29、处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面的任一种可能的设计中所述的方法。

30、第六方面,本技术实施例还提供一种计算机可读存储介质,其中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得上述第一方面的任一种可能的设计中所述的方法实现。

31、第七方面,本技术实施例还提供一种计算机程序产品,包括计算机可读指令,当计算机可读指令被处理器执行时,使得上述第一方面的任一种可能的设计中所述的方法实现。

本文地址:https://www.jishuxx.com/zhuanli/20241015/316385.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。