本发明涉及金融科技领域,尤其涉及一种多节点业务报文的处理方法及装置。
背景技术:
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、本发明实施例中,首先在业务报文处理系统中初始化每个业务类型的报文处理序号,这个处理序号可以被业务报文处理系统中的每个节点读写,在各节点接收到业务报文并将业务报文添加到各自的报文处理队列之前,判断当前添加到报文处理队列的业务报文的报文序列号是否大于该业务报文的业务类型对应的报文处理序号,若大于,则说明该业务报文尚未被处理,则将该业务报文添加到报文处理队列,并将报文处理序号更新为该业务报文的报文序列号。当节点再次接收到该业务类型的业务报文并将再次接收到的业务报文添加到报文处理队列之前,判断再次接收到的业务报文的报文序列号是否大于报文处理序号,若大于,则说明再次接收到的业务报文也尚未被处理,则进行处理。实现了在不增加报文分发单元的情况下,避免多节点处理同一条业务报文,解决了现有技术中多节点重复处理同一条业务报文导致该业务流程受到影响,业务处理状态出现异常的问题。
1.一种多节点业务报文的处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括,若当前添加到报文处理队列的业务报文的报文序列号小于等于该业务报文的业务类型对应的报文处理序号,则将该业务报文丢弃。
3.根据权利要求1所述的方法,其特征在于,在判断所述报文序列号大于所述报文处理序号的情况下,所述方法还包括,
4.根据权利要求3所述的方法,其特征在于,若所述差值不小于所述预定门限值,所述方法还包括,
5.根据权利要求4所述的方法,其特征在于,若在持续判断所述报文序列号是否大于所述报文处理序号的过程中,所述报文序列号小于等于所述报文处理序号,则停止判断所述报文序列号是否大于所述报文处理序号,并将所述业务报文丢弃。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括,按照每个业务类型对应的预定更新时间重新初始化该业务类型的报文处理序号。
7.根据权利要求1所述的方法,其特征在于,将该业务类型的报文处理序号更新为该业务报文的报文序列号的步骤还包括,
8.一种多节点业务报文的处理装置,其特征在于,包括,
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。