CN115987917A - 一种基于消息队列的异步交易转同步方法与系统 - Google Patents
一种基于消息队列的异步交易转同步方法与系统 Download PDFInfo
- Publication number
- CN115987917A CN115987917A CN202310021593.9A CN202310021593A CN115987917A CN 115987917 A CN115987917 A CN 115987917A CN 202310021593 A CN202310021593 A CN 202310021593A CN 115987917 A CN115987917 A CN 115987917A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- thread
- result
- nodex
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000006243 chemical reaction Methods 0.000 title description 8
- 230000004044 response Effects 0.000 claims abstract description 72
- MKXZASYAUGDDCJ-NJAFHUGGSA-N dextromethorphan Chemical compound C([C@@H]12)CCC[C@]11CCN(C)[C@H]2CC2=CC=C(OC)C=C21 MKXZASYAUGDDCJ-NJAFHUGGSA-N 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000012546 transfer Methods 0.000 claims abstract description 14
- 230000005540 biological transmission Effects 0.000 claims abstract description 10
- 230000002618 waking effect Effects 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请一种基于消息队列的异步交易转同步方法与系统,其方法包括:通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。本申请具有在内存中借助线程通知的方式完成交易异步转同步的操作,且能够携带需要通知的数据,增加交易数据处理性能。
Description
技术领域
本申请涉及通信领域,尤其是涉及一种基于消息队列的异步交易转同步方法与系统。
背景技术
在银行的交易系统中,是通过前置机进行与对手机构的交互。以农信银前置机为例,我方通过交易A发送报文至前置机,前置机将报文发送至农信银中心,农信银中心转发报文至对手机构。对手机构接收并处理请求报文,之后将响应报文发送到对手机构的前置机,通过同样的农信银中心转发方式,响应报文最终被我方系统获取,并在我方交易B中进行处理,如图1所示。
对于我方交易A,在将请求报文发送到我方农信银前置机的时候,同步交易就已结束,交易结果在我方交易B中获取并处理,因此,整个请求响应过程是异步的。对于交易A,为了同步响应交易结果,必须通过一定的手段来获取我方交易B中的交易结果数据。
解决交易A获取异步交易B数据的方法,当前比较普遍的做法是在交易A中不断地对数据库中交易流水记录进行轮询查询,轮询一定的次数或者一定的时间,因此上述的现有技术方案在业务层面上的实时性较差。
发明内容
为了增加银行交易系统的实时性,本申请提供一种基于消息队列的异步交易转同步方法与系统。
本申请提供的一种基于消息队列的异步交易转同步方法与系统采用如下的技术方案:
一种基于消息队列的异步交易转同步方法,包括:
通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;
通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;
通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;
通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
通过采用上述技术方案,当交易发起时,通过应用集群中节点nodeX接收该交易的交易请求,并通过交易A线程处理该交易请求,使形成前置机能进行发送的请求报文,以便于将交易请求报文发送至我方前置机,而我方前置机通过转发机构对请求报文进行转发后,对手机构对请求报文进行响应生成响应报文,再次通过我方前置机接收来自对手机构的响应报文,此时通过节点nodeY在我方前置机获取响应报文并通过关联交易流水上的流水号检查异步转同步表,最后判断节点nodeX与nodeY是否为同一个节点,以基于判断结果以线程通知的方式传递交易结果。通过主动通知的方式,使节点nodeX与节点nodeY之间以线程通知的方式传递交易结果,且在内存中借助线程通知的方式完成异步转同步的操作,尽量避免采用轮询的方式获取交易结果,且能够携带需要通知的数据,增加性能。
可选的,所述通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求之前包括:
将应用集群的每个应用节点连接至ActiveMQ消息队列并连接至前置机,应用节点包括节点nodeX与nodeY;
通过ActiveMQ根据应用集群中的应用节点创建对应的消息队列,消息队列包括队列nodeX与队列nodeY,每一应用节点向对应的消息队列进行消息推送。
通过采用上述技术方案,能通过ActiveMQ消息队列对应应用节点创建ActiveMQ消息队列,对应用节点中的异步消息进行路由,保证在应用集群环境中,同一笔交易流水的响应处理交易与请求发送交易在同一个服务器节点上。
可选的,所述通过交易A线程处理交易请求,包括
通过交易A线程判断是否为我方卡片;
当交易请求中的交易银行卡非我方卡片时,则将本次交易的交易流水登记到数据库的异步转同步表中,并记录请求处理的应用节点为节点nodeX;
向发卡行发送交易请求报文,以请求发卡行进行交易。
通过采用上述技术方案,能判断交易的卡片是否为我方卡片,并在非我方卡片时,对本次交易流水登记在异步转同步表中,且记录节点为nodeX,以便于在本次不同行卡片的交易中对异步转同步表进行调用。
可选的,所述通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态之前还包括:
根据需求设置唤醒交易A线程的等待时间;
当超过等待时间则表示对交易A线程的唤醒为超时唤醒。
通过采用上述技术方案,设置唤醒交易A线程的等待时间,以便于根据唤醒时间是否超过等待时间来对本次交易是否出故障进行判断。
可选的,所述判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果,包括:
当判断结果为节点nodeX与节点nodeY为同一个节点,则由节点nodeX或节点nodeY的交易B线程处理响应报文;
处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
通过采用上述技术方案,当判断结果为节点nodeX与节点nodeY为同一节点时,则通过交易B线程处理响应报文,且便于在等待时间内对交易A线程进行唤醒并便于向交易A线程传递交易结果,增加交易结果传递的速度。
可选的,所述判断节点nodeX与节点nodeY是否为同一个节点以通过线程通知的方式传递交易结果,还包括:
当判断结果为节点nodeX与节点nodeY为不同节点时,则节点nodeY将响应报文投递至ActiveMQ消息队列的队列nodeX中;
通过节点nodeX监听队列nodeX;
在队列nodeX收到响应报文后,交由节点nodeX的响应处理交易B线程处理响应报文;
在处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
通过采用上述技术方案,当节点nodeX与及节点nodeY为不同的节点时,节点nodeX与节点nodeY可通过ActiveMQ进行线程通知,使在节点不同时通过ActiveMQ传递响应报文,并增加交易结果传递的速度。
可选的,所述判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果之后还包括:
在交易A线程被唤醒后获取唤醒原因;
当唤醒原因是主动唤醒时,则通过线程传递方式向交易A线程传递的结果即为交易结果;
当唤醒原因是超时唤醒时,则查询最新的交易流水以根据查询到的流水状态作为响应结果。
通过采用上述技术方案,使能根据是否在超过等待时间来得知唤醒交易A线程的唤醒原因。
可选的,所述查询最新的交易流水以根据查询到的流水状态作为响应结果,包括:
查询最新的交易流水获取流水状态;
当流水状态为中间态时,表示传递至交易A线程的响应结果为交易结果;
当流水状态为非中间态时,表示传递至交易A线程的响应结果不一定为交易结果;
在对账周期内对交易结果进行差错处理。
通过采用上述技术方案,当唤醒为超时唤醒时,再次根据交易流水是否为中间态来对交易结果进行判断,增加判断的准确性。
一种基于消息队列的异步交易转同步系统,包括:
线程生成模块,用于通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;
发送模块,用于通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;
接收模块,用于通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;
响应报文获取模块,用于通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
判断传递模块,用于判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
通过采用上述技术方案,当交易发起时,通过主动通知的方式,使节点nodeX与节点nodeY之间以线程通知的方式传递交易结果,且在内存中借助线程通知的方式完成异步转同步的操作,尽量避免采用轮询的方式获取交易结果,且能够携带需要通知的数据,增加性能。
综上所述,本申请包括以下至少一种有益技术效果:
1、实时性高:通过主动通知的方式,能够使得等待交易能在第一时间内获取到交易响应结果;
2、减少了数据库查询:只有等待超时之后才会去查询一次数据库获取最新的交易流水状态;
3、减少了操作系统资源占用:由于通过线程等待和唤醒的机制,使得在整个异步转同步的过程中,不需要操作系统频繁调度当前等待线程,减少了线程上下文切换的数量。
附图说明
图1是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图2是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图3是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图4是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图5是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图6是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图7是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图8是本申请实施例一种基于消息队列的异步交易转同步方法其中一种实施方式的流程框图;
图9是本申请实施例一种基于消息队列的异步交易转同步系统其中一种实施方式的结构框图;
图10是本申请实施例一种基于消息队列的异步交易转同步系统其中一种实施方式的中不同节点的连接图。
具体实施方式
以下结合附图对本申请作进一步详细说明。
为了增加银行交易系统的实时性,本申请提供一种基于消息队列的异步交易转同步方法与系统。
本申请实施例公开一种基于消息队列的异步交易转同步方法,参照图1,包括:
S110、通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求。
其中,在本实施例中的交易请求主要是扣款请求,即进行消费等行为所发生的扣款,交易请求的来源渠道包括互联网渠道、传统的POS机渠道以及ATM渠道等,在本实施例中当从来源发起交易请求后,通过应用集群中节点nodeX接收交易请求并生成针对该交易请求的交易A线程,且是通过交易A线程处理该交易请求,交易A线程运行在服务器的内存中,增加处理速度,而交易A线程中的交易A指的是消费或退款中某一个交易的代称,使能从内存上及时对交易进行处理,增加处理速度。
S120、通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态。
其中,前置机是一种通信应用程序,在金融系统中叫做前置通信程序,是一种以报文交换为基础的中间交易设备。在不同发卡行之间进行相互通讯时,都需通过人行的前置机进行转发,因此人行在进行相互通讯的两个银行之间设置报文交换的服务包括请求报文与响应报文,安装了前置通信程序的服务器就叫做前置机,前置机就是用于将银行的请求报文并发送至人行,或从人行接收请求响应报文并发送至银行内部的服务器。从功能上来看,前置机可以看成设置在人行对其他银行进行路由的服务器。当交易A线程将交易请求报文发送至我方前置机后,为了降低系统负载,此时交易A线程进入等待状态,等待状态下的交易A线程所占用的内存较少。
S130、通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文。
其中,通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文,对手机构即为用户所使用的与当前银行不同的发卡行,在对手机构在接收到我方前置机转发的报文后再通过对手机构的前置机发送响应报文,我方前置机接收来自对手机构的响应报文。
S140、通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
S150、判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
其中,节点nodeY表示在我方前置机中获取对手机构响应报文的节点,而异步转同步表指的是数据库中的用于登记异步转同步信息的表格,作为凭据,在异步消息即响应报文回来时,通过查找异步转同步表,能判断交易银行卡片为非我行卡片。例如,进行银行卡跨行取款时,如拿农业银行的银行卡去工商银行的pos取款,这笔交易信息首先发送至工商银行服务器中,工商银行的服务器在查看到交易的这张卡片不归属于工商银行后,就通过前置机以请求报文的方式通知农业银行,需要扣款的发卡行是农业银行,所以在取款之前要确保这笔流水登记到异步转同步表中。所以通过关联交易流水上的流水号检查异步转同步表,判断节点nodeX与节点nodeY是否为同一个节点,当节点nodeX与节点nodeY为同一个线程时,表示在异步转同步表中,该次交易的银行为同一个银行;当节点nodeX与节点nodeY不属于同一节点时,说明该次交易的银行双方为不同银行,以通过线程通知的方式传递交易结果。
传统方式是通过数据库进行轮询,轮询就是每个查询的周期内查询数据一次。在传统方式中,查询数据库会涉及到网络通信,网络通信的速度相对于本申请在内存上进行通信而言相对较慢,二者之间在速度上的数量级为百万倍,因此本申请明显增加了查询的速度。其次本申请中因为减少了对于数据库的查询,降低了对存储资源的使用。最后由于轮询过程中涉及到了计算机或服务器对各个任务的调度,在调度过程中增加CPU的消耗,所以本申请采用的是操作系统的线程调用,相比而言降低了对CPU的消耗。
参照图2,在步骤S110之前还需将ActiveMQ消息队列进行应用,以便于对异步消息进行路由,因此,通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求之前包括:
S210、将应用集群的每个应用节点连接至ActiveMQ消息队列并连接至前置机,应用节点包括节点nodeX与nodeY。
其中,消息队列(Message Queue,MQ)是应用程序与应用程序之间的通信方法,消息队列常用于业务流程中的异步处理流程,即比较耗时且不需要即时返回结果的处理流程,适用于金融系统中的通信领域的异步处理。由于ActiveMQ消息队列能做到点对点的发送,且由于ActiveMQ消息队列能做到点对点的发送,具备消息持久化的性质,保证消息安全,当应用从宕机恢复后,仍然能够拿到未消费的响应报文,从而使交易结果达成最终一致性,减少后续日终对账处理时的差错数量,因此能保证消息的可靠性,而在本实施例中的消息队列采用ActiveMQ消息队列,在其他实施例中根据实际的应用选取合适的消息队列产品。
借助消息中间件ActiveMQ的特性,使得接收响应报文的节点能够是应用集群中的任何一个节点,并且响应报文能够正确被转发到请求处理交易所在的同一个节点上。转发过程是无状态的,这意味着可以通过横向扩展节点的方式增加交易数据的吞吐量。
且由于银行的交易频次较大,采用应用集群的方式来部署银行的计算机与服务器,应用集群中单个计算机统称为节点,通过局域网等连接方式连接。在本实施例中为了便于理解,所设置的节点为节点nodeX与节点nodeY,分别代表不同的服务器,实际上参照图10所示,应用集群中的节点是根据服务器来设定的,如可为应用节点node1、节点node2与节点node3等。ActiveMQ消息队列连接到应用集群的每一个节点(图中为三个:node1、node2与node3),并通过ActiveMQ消息队列连接至前置机。
S220、通过ActiveMQ根据应用集群中的应用节点创建对应的消息队列,消息队列包括队列nodeX与队列nodeY,每一应用节点向对应的消息队列进行消息推送。
其中,ActiveMQ消息队列按照应用集群节点数创建对应的内部队列,如在本实施例中,若应用集群中的节点分别为节点node1、节点node2与节点node3时,这三个节点分别对应内部队列中的队列node1、队列node2与队列node3。在本实施例中所有应用节点都能向ActiveMQ消息队列推送消息,但是每一应用节点只能消费对应的ActiveMQ消息队列,如节点nodeX只能消费对应的队列nodeX,节点nodeY只能消费对应的队列nodeY。
参照图3,通过交易A线程处理交易请求,包括
S310、通过交易A线程判断是否为我方卡片。
S320、当交易请求中的交易银行卡非我方卡片时,则将本次交易的交易流水登记到数据库的异步转同步表中,并记录请求处理的应用节点为节点nodeX;
S330、向发卡行发送交易请求报文,以请求发卡行进行交易。
其中,由于消费者在交易时涉及到的发卡行可能为非我方卡,所以当该银行卡为非我行卡时就将本次交易的交易流水进行登记,在本实施例中是登记到异步转同步表中,并记录请求处理的应用节点为nodeX,其中节点nodeX为处理本次交易的计算机节点。而当该银行卡为我行卡片时,则直接在我行应用集群服务器中同步进行交易数据的流转以及交易流水,无需进行异步操作。
参照图4,通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态之前还包括:
S410、根据需求设置唤醒交易A线程的等待时间;
S420、当超过等待时间则表示对交易A线程的唤醒为超时唤醒。
在本实施例中,设置的交易A线程的等待时间为设置等待时间的上限,当超过等待时间的上限时,则表示为超时唤醒,即唤醒交易A线程的时间超过等待时间。
参照图5,判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果,包括:
S510、当判断结果为节点nodeX与节点nodeY为同一个节点,则由节点nodeX或节点nodeY的交易B线程处理响应报文;
S520、处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
在本实施例中,当节点nodeX与节点nodeY为同一个节点时,则可直接由交易B线程处理响应报文,并将处理后的交易结果传递至同一节点中的交易A线程,使便于进行线程传递,以增加传递速度。
参照图6,在上一实施例中节点nodeX与节点nodeY为同一节点,在其他实施例节点nodeX与节点nodeY不一定为同一个节点,因此,判断节点nodeX与节点nodeY是否为同一个节点以通过线程通知的方式传递交易结果,还包括:
S610、当判断结果为节点nodeX与节点nodeY为不同节点时,则节点nodeY将响应报文投递至ActiveMQ消息队列的队列nodeX中;
S620、通过节点nodeX监听队列nodeX;
S630、在队列nodeX收到响应报文后,交由节点nodeX的响应处理交易B线程处理响应报文;
S640、在处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
其中,当节点nodeX与节点nodeY为不同节点时,节点nodeY将响应报文投递至ActiveMQ消息队列的队列nodeX中,节点nodeX监听队列nodeX判断队列nodeX是否接收到节点nodeY投递的响应报文,在队列nodeX接收到节点nodeY传递的响应报文后,则节点nodeX也会监听到队列nodeX接收到的响应报文,使得通过消息队列在不同节点之间进行响应报文的传递。
参照图7,在上一实施例中,在交易A线程被唤醒后向交易A线程传递交易结果,还需根据交易A线程的唤醒原因来对交易结果进行判定,所以,判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果之后还包括:
S710、在交易A线程被唤醒后获取唤醒原因。
S720、当唤醒原因是主动唤醒时,则通过线程传递方式向交易A线程传递的结果即为交易结果。
S730、当唤醒原因是超时唤醒时,则查询最新的交易流水以根据查询到的流水状态作为响应结果。
其中,当唤醒原因是主动唤醒时,则表示节点nodeX与节点nodeY为同一个节点,因为在同一个节点中线程之间通信的速度较快,能在等待时间内对交易A线程进行唤醒;当唤醒原因是超时唤醒时,说明交易业务量较大或者节点nodeX与节点nodeY为不同的节点需要通过ActiveMQ消息队列传递响应结果,则等待时间会较长,需要查询最新的交易流水以根据查询到的流水状态作为响应结果。
参照图8,查询最新的交易流水以根据查询到的流水状态作为响应结果,包括:
S810、查询最新的交易流水获取流水状态;
S820、当流水状态为中间态时,表示传递至交易A线程的响应结果为交易结果;
S830、当流水状态为非中间态时,表示传递至交易A线程的响应结果不一定为交易结果;
S840、在对账周期内对交易结果进行差错处理。
一般来说,在交易A线程将交易请求发送至前置机时,流水状态会从已登记更新至已发送,已发送即为中间态,而非中间态则是交易确定了为成功还是失败时的状态,因此在查询最新的交易流水后获取流水状态,当流水状态为中间态时,表示传递至交易A线程的响应结果为交易结果,而当流水状态为非中间态时,表示传递至交易A线程的响应结果不一定为交易结果,此时需要在对账周期内对交易结果进行差错处理,具体表现为通过银行的对账系统进行日终对账等进行差错处理。
本申请实施例公开一种基于消息队列的异步交易转同步系统,包括:
线程生成模块,用于通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;
发送模块,用于通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;
接收模块,用于通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;
响应报文获取模块,用于通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
判断传递模块,用于判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
本申请实施例一种基于消息队列的异步交易转同步方法的实施原理为:当交易发起时,通过应用集群中节点nodeX接收该交易的交易请求,并通过交易A线程处理该交易请求,使形成前置机能进行发送的请求报文,以便于将交易请求报文发送至我方前置机,而我方前置机通过转发机构对请求报文进行转发后,对手机构对请求报文进行响应生成响应报文,再次通过我方前置机接收来自对手机构的响应报文,此时通过节点nodeY在我方前置机获取响应报文并通过关联交易流水上的流水号检查异步转同步表,最后判断节点nodeX与nodeY是否为同一个节点,以基于判断结果以线程通知的方式传递交易结果。通过主动通知的方式,使节点nodeX与节点nodeY之间以线程通知的方式传递交易结果,且在内存中借助线程通知的方式完成异步转同步的操作,尽量避免采用轮询的方式获取交易结果,且能够携带需要通知的数据,增加性能。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (9)
1.一种基于消息队列的异步交易转同步方法,其特征在于,包括:
通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;
通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;
通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;
通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
2.根据权利要求1所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求之前包括:
将应用集群的每个应用节点连接至ActiveMQ消息队列并连接至前置机,应用节点包括节点nodeX与nodeY;
通过ActiveMQ根据应用集群中的应用节点创建对应的消息队列,消息队列包括队列nodeX与队列nodeY,每一应用节点向对应的消息队列进行消息推送。
3.根据权利要求1所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述通过交易A线程处理交易请求,包括
通过交易A线程判断是否为我方卡片;
当交易请求中的交易银行卡非我方卡片时,则将本次交易的交易流水登记到数据库的异步转同步表中,并记录请求处理的应用节点为节点nodeX;
向发卡行发送交易请求报文,以请求发卡行进行交易。
4.根据权利要求1所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态之前还包括:
根据需求设置唤醒交易A线程的等待时间;
当超过等待时间则表示对交易A线程的唤醒为超时唤醒。
5.根据权利要求1所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果,包括:
当判断结果为节点nodeX与节点nodeY为同一个节点,则由节点nodeX或节点nodeY的交易B线程处理响应报文;
处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
6.根据权利要求1所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述判断节点nodeX与节点nodeY是否为同一个节点以通过线程通知的方式传递交易结果,还包括:
当判断结果为节点nodeX与节点nodeY为不同节点时,则节点nodeY将响应报文投递至ActiveMQ消息队列的队列nodeX中;
通过节点nodeX监听队列nodeX;
在队列nodeX收到响应报文后,交由节点nodeX的响应处理交易B线程处理响应报文;
在处理完毕后唤醒交易A线程的对应等待线程,以通过线程通知的方式向交易A线程传递交易结果。
7.根据权利要求4-6任一项所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述判断节点nodeX与节点nodeY是否为同一个节点以通过判断结果以线程通知的方式传递交易结果之后还包括:
在交易A线程被唤醒后获取唤醒原因;
当唤醒原因是主动唤醒时,则通过线程传递方式向交易A线程传递的结果即为交易结果;
当唤醒原因是超时唤醒时,则查询最新的交易流水以根据查询到的流水状态作为响应结果。
8.根据权利要求7所述的一种基于消息队列的异步交易转同步方法,其特征在于,所述查询最新的交易流水以根据查询到的流水状态作为响应结果,包括:
查询最新的交易流水获取流水状态;
当流水状态为中间态时,表示传递至交易A线程的响应结果为交易结果;
当流水状态为非中间态时,表示传递至交易A线程的响应结果不一定为交易结果;
在对账周期内对交易结果进行差错处理。
9.一种基于消息队列的异步交易转同步系统,其特征在于,采用权利要求1-8任一项所述的方法,包括:
线程生成模块,用于通过应用集群中节点nodeX接收交易请求并生成交易A线程,且通过交易A线程处理交易请求;
发送模块,用于通过交易A线程将处理后生成的交易请求报文发送至我方前置机,并在发送成功后进入等待状态;
接收模块,用于通过我方前置机所在转发机构进行转发后,再通过我方前置机接收来自对手机构的响应报文;
响应报文获取模块,用于通过节点nodeY在我方前置机中获取响应报文,并通过关联交易流水上的流水号检查异步转同步表;
判断传递模块,用于判断节点nodeX与节点nodeY是否为同一个节点,使基于判断结果以线程通知的方式传递交易结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310021593.9A CN115987917A (zh) | 2023-01-07 | 2023-01-07 | 一种基于消息队列的异步交易转同步方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310021593.9A CN115987917A (zh) | 2023-01-07 | 2023-01-07 | 一种基于消息队列的异步交易转同步方法与系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115987917A true CN115987917A (zh) | 2023-04-18 |
Family
ID=85967944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310021593.9A Pending CN115987917A (zh) | 2023-01-07 | 2023-01-07 | 一种基于消息队列的异步交易转同步方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115987917A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130179270A1 (en) * | 2012-01-09 | 2013-07-11 | David Bryant Nolan | Computer implemented enterprise marketing system and method for facilitating retail negotiation between merchants and consumers |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN109062982A (zh) * | 2018-07-02 | 2018-12-21 | 平安科技(深圳)有限公司 | 财务数据交互方法、装置、计算机设备和存储介质 |
CN110336847A (zh) * | 2019-04-19 | 2019-10-15 | 银清科技(北京)有限公司 | 支付报文传输系统及方法 |
CN113641472A (zh) * | 2021-08-10 | 2021-11-12 | 中国建设银行股份有限公司 | 分布式应用的异转同实现方法及装置 |
CN115334066A (zh) * | 2022-10-13 | 2022-11-11 | 飞天诚信科技股份有限公司 | 一种分布式集群系统及其处理同步请求响应的方法 |
-
2023
- 2023-01-07 CN CN202310021593.9A patent/CN115987917A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130179270A1 (en) * | 2012-01-09 | 2013-07-11 | David Bryant Nolan | Computer implemented enterprise marketing system and method for facilitating retail negotiation between merchants and consumers |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN109062982A (zh) * | 2018-07-02 | 2018-12-21 | 平安科技(深圳)有限公司 | 财务数据交互方法、装置、计算机设备和存储介质 |
CN110336847A (zh) * | 2019-04-19 | 2019-10-15 | 银清科技(北京)有限公司 | 支付报文传输系统及方法 |
CN113641472A (zh) * | 2021-08-10 | 2021-11-12 | 中国建设银行股份有限公司 | 分布式应用的异转同实现方法及装置 |
CN115334066A (zh) * | 2022-10-13 | 2022-11-11 | 飞天诚信科技股份有限公司 | 一种分布式集群系统及其处理同步请求响应的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11411897B2 (en) | Communication method and communication apparatus for message queue telemetry transport | |
US11057485B2 (en) | Server cluster and method for push notification service | |
US6216151B1 (en) | Saving connection time by obtaining result of request at later reconnection with server supplied associated key | |
CN111580995A (zh) | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 | |
CN107093138A (zh) | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 | |
US20120136946A1 (en) | Cluster server in instant messaging system and method for communicating between clusters | |
CN110134534B (zh) | 基于nio针对大数据分布式系统进行消息处理优化的系统及方法 | |
CN112711635B (zh) | 一种分布式物联设备跨区域数据一致性的方法和服务集群 | |
CN112583895B (zh) | Tcp通信方法、系统及装置 | |
CN114338063B (zh) | 消息队列系统、业务处理方法及计算机可读存储介质 | |
US11997066B2 (en) | Data transmission system and method for edge computing and computer readable medium thereof | |
CN114024972A (zh) | 一种长连接通信方法、系统、装置、设备及存储介质 | |
CN114338769B (zh) | 访问请求的处理方法及装置 | |
CN112491951B (zh) | 对等网络中的请求处理方法、服务器及存储介质 | |
CN114528119A (zh) | 一种基于发布订阅队列的异步转同步缩短响应时间的方案 | |
CN114490100B (zh) | 一种消息队列遥测传输负载均衡方法、装置及服务器 | |
CN115987917A (zh) | 一种基于消息队列的异步交易转同步方法与系统 | |
CN111198773A (zh) | 基于消息的应用通信方法及设备 | |
US20090106781A1 (en) | Remote call handling methods and systems | |
CN112492019B (zh) | 消息推送方法、装置、电子设备及存储介质 | |
CN116016546A (zh) | 一种在cdn中批量预热资源文件的方法及系统 | |
CN112235413B (zh) | 一种通用的物联网接口管理平台 | |
CN114844847A (zh) | 一种高可靠性的实时消息分发方法及装置 | |
CN113190624A (zh) | 基于分布式跨容器的异步转同步调用方法及装置 | |
CN116074331A (zh) | 区块数据同步方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |