CN109274466A - 一种中间件报文传输方法及系统 - Google Patents

一种中间件报文传输方法及系统 Download PDF

Info

Publication number
CN109274466A
CN109274466A CN201810891341.0A CN201810891341A CN109274466A CN 109274466 A CN109274466 A CN 109274466A CN 201810891341 A CN201810891341 A CN 201810891341A CN 109274466 A CN109274466 A CN 109274466A
Authority
CN
China
Prior art keywords
message
receipt
receiving end
transmitting terminal
status
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.)
Granted
Application number
CN201810891341.0A
Other languages
English (en)
Other versions
CN109274466B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PEOPLE'S BANK OF CHINA NATIONAL CLEARING CENTER
Original Assignee
PEOPLE'S BANK OF CHINA NATIONAL CLEARING CENTER
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by PEOPLE'S BANK OF CHINA NATIONAL CLEARING CENTER filed Critical PEOPLE'S BANK OF CHINA NATIONAL CLEARING CENTER
Priority to CN201810891341.0A priority Critical patent/CN109274466B/zh
Publication of CN109274466A publication Critical patent/CN109274466A/zh
Application granted granted Critical
Publication of CN109274466B publication Critical patent/CN109274466B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1806Go-back-N protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种中间件报文传输方法及系统。所述方法包括:发送端将其持久化文件中的报文发送至接收端;接收端接收到报文后,将报文保存至接收端持久化文件中,并向发送端发送第一回执;发送端接收到第一回执后,删除发送端持久化文件中的报文,向接收端发送第二回执,并将报文的报文状态设置为发送成功状态;接收端接收到第二回执后,将报文状态设置为接收成功状态。本发明可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。

Description

一种中间件报文传输方法及系统
技术领域
本发明涉及报文传输领域,尤指一种中间件报文传输方法及系统。
背景技术
金融系统中广泛采用中间件技术,实现报文不丢失不重传的传输,不同的中间件对报文传输的要求不一样,大多数中间件能够实现稳定传输,偶尔会出现丢失或重发。现有中间件传输技术有ActiveMQ及Nanomsg,ActiveMQ提供稳定传输和持久化,但不确保报文不丢失或重传。Nanomsg在机器不掉电的时候效率高于ActiveMQ,没有持久化,并且现有技术中机器宕机则会出现报文丢失;不宕机时也会出现报文重复或丢失。因此,现有的报文传输技术中,报文传输过程均存在重传及丢失的问题。
发明内容
为了解决现有报文传输技术中,报文传输过程存在的重传及丢失问题,本发明实施例提供一种中间件报文传输方法,所述方法包括:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
可选的,在本发明一实施例中,所述方法还包括:若发送端没有收到所述第一回执,则执行预设报文重发机制。
可选的,在本发明一实施例中,所述方法还包括:所述接收端接收到所述报文后,判断所述报文是否存在于所述接收端持久化文件中;若所述报文存在于所述接收端持久化文件中,向所述发送端发送所述第一回执;若所述报文不存在于所述接收端持久化文件中,将所述报文保存至所述接收端持久化文件中后,向所述发送端发送所述第一回执。
可选的,在本发明一实施例中,所述方法还包括:若接收端没有收到所述第二回执,则执行预设第一回执重发机制。
可选的,在本发明一实施例中,所述方法还包括:所述发送端接收到所述第一回执后,判断所述报文状态是否为发送成功状态;若所述报文状态为发送成功状态,向所述接收端发送所述第二回执;若所述报文状态不为发送成功状态,删除所述发送端持久化文件中的所述报文,向所述接收端发送所述第二回执,并将所述报文状态设置为发送成功状态。
可选的,在本发明一实施例中,所述方法还包括:在所述发送端接收到所述第一回执后,将所述报文状态设置为成功接收第一回执状态,然后删除所述发送端持久化文件中的所述报文。
可选的,在本发明一实施例中,所述方法还包括:判断所述发送端是否出现异常;当所述发送端发生异常后,根据所述报文状态发送所述报文或所述第二回执。
可选的,在本发明一实施例中,所述方法还包括:在所述接收端将所述报文保存至接收端持久化文件中后,将所述报文状态设置为持久化成功状态,然后向所述发送端发送第一回执。
可选的,在本发明一实施例中,所述方法还包括:判断所述接收端是否出现异常;当所述接收端出现异常后,根据所述报文状态发送所述第一回执。
本发明实施例还提供一种中间件报文传输系统,所述系统包括:
报文发送单元,用于将发送端持久化文件中的报文发送至接收端;
第一回执单元,用于在所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
第二回执单元,用于在所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
传输完成单元,用于在所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
可选的,在本发明一实施例中,所述系统还包括:报文重发单元,用于当发送端没有收到所述第一回执时,执行预设报文重发机制。
可选的,在本发明一实施例中,所述系统还包括:第一判断单元,用于在所述接收端接收到所述报文后,判断所述报文是否存在于所述接收端持久化文件中;第一回执发送单元,用于当所述报文存在于所述接收端持久化文件中时,向所述发送端发送所述第一回执;保存报文单元,用于当所述报文不存在于所述接收端持久化文件中时,将所述报文保存至所述接收端持久化文件中后,向所述发送端发送所述第一回执。
可选的,在本发明一实施例中,所述系统还包括:第一回执重发单元,用于当接收端没有收到所述第二回执时,执行预设第一回执重发机制。
可选的,在本发明一实施例中,所述系统还包括:第二判断单元,用于在所述发送端接收到所述第一回执后,判断所述报文状态是否为发送成功状态;第二回执发送单元,用于当所述报文状态为发送成功状态时,向所述接收端发送所述第二回执;删除报文单元,用于当所述报文状态不为发送成功状态时,删除所述发送端持久化文件中的所述报文,向所述接收端发送所述第二回执,并将所述报文状态设置为发送成功状态。
可选的,在本发明一实施例中,所述系统还包括:第一报文状态单元,用于在所述发送端接收到所述第一回执后,将所述报文状态设置为成功接收第一回执状态,然后删除所述发送端持久化文件中的所述报文。
可选的,在本发明一实施例中,所述系统还包括:第一异常单元,用于判断所述发送端是否出现异常;第一重发单元,用于当所述发送端发生异常后,根据所述报文状态发送所述报文或所述第二回执。
可选的,在本发明一实施例中,所述系统还包括:第二报文状态单元,用于在所述接收端将所述报文保存至接收端持久化文件中后,将所述报文状态设置为持久化成功状态,然后向所述发送端发送第一回执。
可选的,在本发明一实施例中,所述系统还包括:第二异常单元,用于判断所述接收端是否出现异常;第二重发单元,用于当所述接收端出现异常后,根据所述报文状态发送所述第一回执。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
本发明可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种中间件报文传输方法的流程图;
图2为本发明实施例中间件报文传输的具体流程示意图;
图3为本发明实施例一种中间件报文传输系统的结构示意图。
具体实施方式
本发明实施例提供一种中间件报文传输方法及系统。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示为本发明实施例一种中间件报文传输方法的流程图,图中所示方法包括:步骤S1,发送端将其持久化文件中的报文发送至接收端;
步骤S2,所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
步骤S3,所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
步骤S4,所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
在本实施例中,首先发送端将需要发送的报文进行持久化处理,保存于发送端持久化文件中。该报文进入发送端的发送队列等待发送,然后发送端将该报文发送至接收端。接收端接收到该报文后,对该报文进行持久化处理,并保存于接收端持久化文件中。接收端保存报文后,向发送端发送第一回执。发送端收到该第一回执后,将该报文删除,向接收端发送第二回执,并将报文的状态设置为发送成功状态。此时该报文仅存在于接收端持久化文件中。在接收端接收到第二回执后,将报文状态设置为接收成功状态,此时该报文的传输完成,接收端可对该报文进行后续操作。
作为本发明的一个实施例,该方法还包括:若发送端没有收到所述第一回执,则执行预设报文重发机制。
在本实施例中,若发送端并没有接收到第一回执,那么存在两种情况,第一种是接收端并没有接收到报文;第二种是接收端接收到该报文,并且发送出第一回执,但发送端并没有接收到第一回执。无论哪种情况,都触发报文重发机制,以保证报文成功被接收端接收。报文重发机制可预先设置,例如,重发报文次数为3次,每次发送完之后都判断是否接收到第一回执,若没收到继续重发报文,直到重发次数达到3次。达到重发次数后,可能是由于网络不通等原因导致报文发送失败,可等待一段时间后再次发送。
作为本发明的一个实施例,该方法还包括:接收端接收到报文后,判断报文是否存在于接收端持久化文件中;若报文存在于接收端持久化文件中,向发送端发送第一回执;若报文不存在于接收端持久化文件中,将报文保存至接收端持久化文件中后,向发送端发送第一回执。
在本实施例中,接收端接收到报文后,在其持久化文件中查找该报文,若查找到该报文,则不对其进行持久化处理,直接向发送端发送第一回执。若并未查找到该报文,则对该报文进行持久化处理,保存于接收端持久化文件中,再向发送端发送第一回执。
其中,接收端接收到报文后,还需要对其进行检查,若出现检查错误,例如报文不完整等情况,则丢弃报文,并不发送第一回执。
作为本发明的一个实施例,该方法还包括:若接收端没有收到第二回执,则执行预设第一回执重发机制。
在本实施例中,类似于报文重发机制,在接收端并没有接收到第二回执时,存在两种情况。第一种是发送端并没有接收到第一回执;第二种是发送端接收到第一回执,并删除了报文,向接收端发送了第二回执,但接收端并未接收到第二回执。无论哪种情况,为了保证报文不丢失不重传,均执行第一回执重发机制。第一回执重发机制可以预先设置,例如,重发第一回执次数为3次,接收端重新向发送端发送第一回执,直到收到第二回执或者达到重发次后,停止重发。若还是没有收到第二回执,那么有可能是网络不通,可等待一段时间后再次发送。
作为本发明的一个实施例,该方法还包括:发送端接收到第一回执后,判断报文状态是否为发送成功状态;若报文状态为发送成功状态,向接收端发送第二回执;若报文状态不为发送成功状态,删除发送端持久化文件中的报文,向接收端发送第二回执,并将报文状态设置为发送成功状态。
在本实施例中,发送端接收到第一回执后,检查该报文的状态是否为发送成功状态,若为发送成功状态,那么说明此前发送端已经接收过该第一回执,此时仅需向接收端发送第二回执;若报文状态不为发送成功状态,那么发送端删于持久化文件中删除该报文,向接收端发送第二回执,并将报文状态设置为发送成功状态。
作为本发明的一个实施例,该方法还包括:在发送端接收到第一回执后,将报文状态设置为成功接收第一回执状态,然后删除发送端持久化文件中的报文。
在本实施例中,该方法还包括:判断发送端是否出现异常;当发送端发生异常后,根据报文状态发送报文或所述第二回执。当发送端出现down机等异常情况时,为了确保报文传输不失败,在发送端重新运作后,检测报文状态。
其中,在发送端将报文持久化处理后,将报文状态设置为待发送状态,若发送端检查到报文状态为待发送状态,则继续执行发送过程,向接收端发送该报文;若报文状态为成功接收第一回执状态,则执行删除其持久化文件中的该报文,并向接收端发送第二回执。
作为本发明的一个实施例,该方法还包括:在接收端将报文保存至接收端持久化文件中后,将报文状态设置为持久化成功状态,然后向发送端发送第一回执。
在本实施例中,方法还包括:判断接收端是否出现异常;当接收端出现异常后,根据报文状态发送第一回执。当接收端出现down机等异常情况时,为了确保报文传输不失败,在接收端重新运作后,检测报文状态。
其中,在接收端接收到报文并对其持久化处理之前,该报文状态为未持久化状态。若接收端检查到报文状态为未持久化,则说明接收端并没有收到该报文或持久化失败,此时接收端无需执行操作,等待发送端重新发送报文;若检查到报文状态为持久化成功状态,但并不是接收成功状态,则向发送端发送第一回执;若为接收成功状态,则无需执行其他传输处理。
通过本发明中的报文传输方法,可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。
如图2所示为本发明实施例中间件报文传输的具体流程示意图,图中更为详细的显示出本发明中报文的传输过程。具体说明如下:
(1)发送端:报文已经本地队列正常,持久化或接收成功,状态改为SEND_TO_SEND(待发送状态)。
(2)发送端:S.1进入发送队,报文放入内存中远程对列,并更新报文在文件中状态。
(3)发送端:S.2发送报文,报文发送线程从远程队列中取出报文发送。
(4)发送端:报文发送不成功,如果链路down(链路故障状态)阻塞等待,直到链路正常,其它原因失败进入SEND_FAILE(发送失败状态);报文发送成功,等待接收端发送ACK1报文(第一回执)。
(5)发送端:S.3等待ACK1。
(6)接收端:R.1等待报文,如果链路down阻塞,直到链路正常。
(7)接收端:R.2接收报文。
(8)接收端:R.3报文CheckSum(校验码),如果检查没有问题,报文接收成功并存于内存,内存中报文状态标记RECV_NO_PERSIST(未持久化状态)。
(9)接收端:R.31丢弃报文,CheckSum检查不成功,直接把报文丢弃。
(10)接收端:R.4报文持久化,报文状态变更为RECV_PERSIST(持久化成功状态),并把内存中接受报文存文件。
(11)接收端:R.5发送ACK1,发送ACK1,等待发送端响应ACK2(第二回执)。
(12)接收端:ACK1发送失败,直接进入RECV_FAILED(接收失败状态);发送成功,等待发送端发送ACK2。
(13)发送端:收到ACK1,报文进入SEND_GET_ACK1状态(成功接收第一回执状态)。
(14)发送端:没收到ACK1,进入SEND_ACK1_TIMEOUT状态(第一回执超时状态),如果没有连续三次接收不到ACK1,则进入S.2,重发报文。
(15)发送端:S.31消息加入超时队列,没收到ACK1,进入SEND_ACK1_TIMEOUT状态,如果连续三次接收不到ACK1,则进入S.31,报文消息加入超时队列。
(16)发送端:S.32发送超时队列处理,持久化到死信队列,该报文处理结束。
(17)发送端:S.4更新记录,报文状态改为SEND_SUCCESS(发送成功状态),存入归档文件,从内存队列和持久化文件中移出。
(18)发送端:S.5发送ACK2。
(19)发送端:ACK2发送成功,该报文处理流程结束;发送失败,记录日志。
(20)接收端:R.7更新记录,接收端收到发送端响应ACK2,更新内存和文件中消息状态改为RECV_SUCCESS(接收成功状态),从内存接收队列中去除该消息,流程结束。
(21)接收端:没有收到ACK2,进入RECV_ACK2_TIMEOUT状态(第二回执超时状态),如果没有超过3次,重发发送ACK1。
(22)接收端:R.61消息移入超时队列,把接受报文放入接收超时队列。
(23)接收端:R.62接收超时队列处理,把接收超时队列从本地接收队列移到本地接收死信队列,流程结束。
在本实施例中,实现报文传输不丢失的说明如下:
(1)报文在S.1、S.2发送未成功,报文存在于发送端持久化文件中。
(2)报文已发送,发送端未收到接收端的ACK1。
a)接收端没有收到报文或接收报文有误,报文在报文发送成功前存在于发送端持久化文件(本地队列或死信队列)中。
b)接收端收到报文,但发送端没收到ACK1,报文存在于发送端持久化文件和接收端持久化文件中。
(3)接收端发送ACK1成功后未收到ACK2。
a)发送端未收到ACK1,报文在发送端不会删除,报文存在发送端持久化文件中。
b)发送端收到ACK1,在S.4后故障,报文在发送端删除,报文存在接收端持久化文件中。
c)发送端收到ACK1,并返回了ACK2,但接收端未收到ACK2,报文存在于接收端持久化文件中。
(4)接收端收到ACK2,表明此次报文传输成功,报文存在于接收端持久化文件。
(5)R.4持久化失败,处理过程同(2)。
(6)发送和接收对于文件更新或创建时,文件操作出错,则重新读写并告警。对于系统中断导致的错误,不影响报文存储。
(7)对于文件系统错误或存储介质错误,将导致数据在接收端或发送端丢失,目前的流程可以尽量减少因此而丢失报文。S.1之前文件系统或存储介质出错暂不考虑,S2发送出去后,接收端对于错误报文(通过报头CheckSum)不会接收,R.4持久化的报文即为没有错误的报文,后面报文同时存在两端,直到S.4执行后从发送端删除,R7或R.61都可以存储报文。即只要不是两台设备同时文件系统或介质故障,报文仍然可以不丢失;S.1之前文件系统或存储介质出错的问题,需要提高文件系统和存储系统的稳定性,减少这种可能性造成报文丢失。
(8)对于存储在本地文件系统的报文,如果GET之后没有PUT到发送队列就COMMIT操作,报文的存储由应用负责,不属于传输系统责任。
(9)对于down机情况下报文不丢失情况,参见down机恢复。
(10)对于链路故障,发送接收的Nanomsg操作阻塞。
在本实施例中,实现报文传输不重复的说明如下:
(1)发送端发送报文,但一直未收到ACK1,执行重发机制(3次)。
a)网络不通,报文未发送出去,目前实现是同步等待发送完成,因此不存在报文重复处理问题。
b)接收端收到报文并返回ACK1,但发送端未收到。
此时接收端收到发送端的重发报文,检查correlation_id(报文ID),若发现在内存队列或持久化文件中存在,则不做持久化处理,直接再返回ACK1。
(2)接收端发送ACK1,未收到ACK2,重发3次ACK1。
a)发送端收到ACK1并没有返回ACK2,接收端重发ACK1,如果该消息已经删除,重新发送ACK2;如果消息没有删除,正常处理。此时发送端直接发送对应correlation_id的ACK2,不带报文。
b)发送端收到ACK1并返回ACK2,但接收端未收到,接收端重发ACK1,期间发送端收到了,此时发送端直接发送对应correlation_id的ACK2,不带报文。
(3)对于down机情况下报文不重传情况,参见down机恢复。
(4)对于链路故障,发送接收的Nanomsg操作阻塞。
在本实施例中,对于异常情况的处理如下:
服务器意外down机或异常退出,重启后恢复链路后需要对未成功传输的报文恢复,分为发送端单方、接收端单方、发送端接收端同时down机3种情况,以下分别给出恢复的方案:
1、发送端单方down机
a)未处理的报文,即S.1之前:发送端重启后从持久化文件读取,直接发送。
b)处理中的报文,发送报文之前,消息状态为SEND_TO_SEND,即S.2之前:报文恢复成未处理报文,余下步骤按照a)操作。
c)处理中的报文,已经发送报文,没有收到ACK1,消息状态为SEND_MSG_SENT(发送端报文发送完成),即S.3之前:报文恢复成未处理报文,余下步骤按照a)操作。
d)处理中的报文,已经发送报文,收到ACK1,消息状态为SEND_GET_ACK1,即S.4之前:重启后收到ACK1,S.4更新记录,S.5发送ACK2报文;重启后没有收到ACK1,S.4更新记录,S.5发送ACK2报文(接收端收到ACK2,如果在正常队列里找不到该消息,需要在超时队列里找)。
e)处理中的报文,已经发送报文,收到ACK1即S.5之前:重启后收到ACK1,S.4更新记录(如果没有该记录,该报文为恢复报文,直接发送ACK2即可),S.5发送ACK2报文;重启后没有收到ACK1,本地不存在该消息记录,不处理,接收端把该消息放入超时队列。
f)处理完的报文,不再处理。
2、接收端单方down机
a)报文为持久化之前,即R.4之前:发送端未收到ACK1的报文重发,接收端不需任何恢复操作。
b)报文为持久化成功状态,消息状态为RECV_PERSIST,未收到ACK2,即R.6之前:返回ACK1。
c)报文为持久化持久化成功状态,消息状态为RECV_PERSIST,收到ACK2,即R.7之前:返回ACK1。
d)报文为持久化持久化成功状态,消息状态为RECV_ACK2_TIMEOUT,未收到ACK2:返回ACK1。
e)报文为持久化持久化成功状态,在超时队列:不处理。
3、发送端接收端同时down机
合并1、2处理。
通过本发明中的报文传输方法,可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。
如图3所示为本发明实施例一种中间件报文传输系统的结构示意图,图中所示系统包括:报文发送单元10,用于将发送端持久化文件中的报文发送至接收端;
第一回执单元20,用于在所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
第二回执单元30,用于在所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
传输完成单元40,用于在所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
作为本发明的一个实施例,所述系统还包括:报文重发单元,用于当发送端没有收到所述第一回执时,执行预设报文重发机制。
作为本发明的一个实施例,所述系统还包括:第一判断单元,用于在所述接收端接收到所述报文后,判断所述报文是否存在于所述接收端持久化文件中;第一回执发送单元,用于当所述报文存在于所述接收端持久化文件中时,向所述发送端发送所述第一回执;保存报文单元,用于当所述报文不存在于所述接收端持久化文件中时,将所述报文保存至所述接收端持久化文件中后,向所述发送端发送所述第一回执。
作为本发明的一个实施例,所述系统还包括:第一回执重发单元,用于当接收端没有收到所述第二回执时,执行预设第一回执重发机制。
作为本发明的一个实施例,所述系统还包括:第二判断单元,用于在所述发送端接收到所述第一回执后,判断所述报文状态是否为发送成功状态;第二回执发送单元,用于当所述报文状态为发送成功状态时,向所述接收端发送所述第二回执;删除报文单元,用于当所述报文状态不为发送成功状态时,删除所述发送端持久化文件中的所述报文,向所述接收端发送所述第二回执,并将所述报文状态设置为发送成功状态。
作为本发明的一个实施例,所述系统还包括:第一报文状态单元,用于在所述发送端接收到所述第一回执后,将所述报文状态设置为成功接收第一回执状态,然后删除所述发送端持久化文件中的所述报文。
在本实施例中,所述系统还包括:第一异常单元,用于判断所述发送端是否出现异常;第一重发单元,用于当所述发送端发生异常后,根据所述报文状态发送所述报文或所述第二回执。
作为本发明的一个实施例,所述系统还包括:第二报文状态单元,用于在所述接收端将所述报文保存至接收端持久化文件中后,将所述报文状态设置为持久化成功状态,然后向所述发送端发送第一回执。
在本实施例中,所述系统还包括:第二异常单元,用于判断所述接收端是否出现异常;第二重发单元,用于当所述接收端出现异常后,根据所述报文状态发送所述第一回执。
基于与上述一种中间件报文传输方法相同的申请构思,本发明还提供了上述一种中间件报文传输系统。由于该一种中间件报文传输系统解决问题的原理与一种中间件报文传输方法相似,因此该一种中间件报文传输系统的实施可以参见一种中间件报文传输方法的实施,重复之处不再赘述。
通过本发明中的报文传输系统,可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
基于与上述一种中间件报文传输方法相同的申请构思,本发明还提供了上述一种计算机设备及一种计算机可读存储介质。由于该一种计算机设备及一种计算机可读存储介质解决问题的原理与一种中间件报文传输方法相似,因此该一种计算机设备及一种计算机可读存储介质的实施可以参见一种中间件报文传输方法的实施,重复之处不再赘述。
通过本发明中的计算机设备及计算机可读存储介质,可以保证报文在中间件传输时无丢失和重传,在网络中唯一存在。可以用在各种高可靠性报文传输系统中,目前在金融系统中可以替换MQ等商用中间件系统,为金融企业和银行系统节省中间件开支,同时由于自主开发,极大提高国家重要信息系统的安全性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如ROM/RAM、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1.一种中间件报文传输方法,其特征在于,所述方法包括:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若发送端没有收到所述第一回执,则执行预设报文重发机制。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述接收端接收到所述报文后,判断所述报文是否存在于所述接收端持久化文件中;
若所述报文存在于所述接收端持久化文件中,向所述发送端发送所述第一回执;
若所述报文不存在于所述接收端持久化文件中,将所述报文保存至所述接收端持久化文件中后,向所述发送端发送所述第一回执。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:若接收端没有收到所述第二回执,则执行预设第一回执重发机制。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述发送端接收到所述第一回执后,判断所述报文状态是否为发送成功状态;
若所述报文状态为发送成功状态,向所述接收端发送所述第二回执;
若所述报文状态不为发送成功状态,删除所述发送端持久化文件中的所述报文,向所述接收端发送所述第二回执,并将所述报文状态设置为发送成功状态。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述发送端接收到所述第一回执后,将所述报文状态设置为成功接收第一回执状态,然后删除所述发送端持久化文件中的所述报文。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
判断所述发送端是否出现异常;
当所述发送端发生异常后,根据所述报文状态发送所述报文或所述第二回执。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述接收端将所述报文保存至接收端持久化文件中后,将所述报文状态设置为持久化成功状态,然后向所述发送端发送第一回执。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
判断所述接收端是否出现异常;
当所述接收端出现异常后,根据所述报文状态发送所述第一回执。
10.一种中间件报文传输系统,其特征在于,所述系统包括:
报文发送单元,用于将发送端持久化文件中的报文发送至接收端;
第一回执单元,用于在所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
第二回执单元,用于在所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
传输完成单元,用于在所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
11.根据权利要求10所述的系统,其特征在于,所述系统还包括:报文重发单元,用于当发送端没有收到所述第一回执时,执行预设报文重发机制。
12.根据权利要求10所述的系统,其特征在于,所述系统还包括:
第一判断单元,用于在所述接收端接收到所述报文后,判断所述报文是否存在于所述接收端持久化文件中;
第一回执发送单元,用于当所述报文存在于所述接收端持久化文件中时,向所述发送端发送所述第一回执;
保存报文单元,用于当所述报文不存在于所述接收端持久化文件中时,将所述报文保存至所述接收端持久化文件中后,向所述发送端发送所述第一回执。
13.根据权利要求10所述的系统,其特征在于,所述系统还包括:第一回执重发单元,用于当接收端没有收到所述第二回执时,执行预设第一回执重发机制。
14.根据权利要求10所述的系统,其特征在于,所述系统还包括:
第二判断单元,用于在所述发送端接收到所述第一回执后,判断所述报文状态是否为发送成功状态;
第二回执发送单元,用于当所述报文状态为发送成功状态时,向所述接收端发送所述第二回执;
删除报文单元,用于当所述报文状态不为发送成功状态时,删除所述发送端持久化文件中的所述报文,向所述接收端发送所述第二回执,并将所述报文状态设置为发送成功状态。
15.根据权利要求10所述的系统,其特征在于,所述系统还包括:第一报文状态单元,用于在所述发送端接收到所述第一回执后,将所述报文状态设置为成功接收第一回执状态,然后删除所述发送端持久化文件中的所述报文。
16.根据权利要求15所述的系统,其特征在于,所述系统还包括:
第一异常单元,用于判断所述发送端是否出现异常;
第一重发单元,用于当所述发送端发生异常后,根据所述报文状态发送所述报文或所述第二回执。
17.根据权利要求10所述的系统,其特征在于,所述系统还包括:第二报文状态单元,用于在所述接收端将所述报文保存至接收端持久化文件中后,将所述报文状态设置为持久化成功状态,然后向所述发送端发送第一回执。
18.根据权利要求17所述的系统,其特征在于,所述系统还包括:
第二异常单元,用于判断所述接收端是否出现异常;
第二重发单元,用于当所述接收端出现异常后,根据所述报文状态发送所述第一回执。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
发送端将其持久化文件中的报文发送至接收端;
所述接收端接收到所述报文后,将所述报文保存至接收端持久化文件中,并向所述发送端发送第一回执;
所述发送端接收到所述第一回执后,删除发送端持久化文件中的所述报文,向所述接收端发送第二回执,并将所述报文的报文状态设置为发送成功状态;
所述接收端接收到所述第二回执后,将所述报文状态设置为接收成功状态。
CN201810891341.0A 2018-08-07 2018-08-07 一种中间件报文传输方法及系统 Active CN109274466B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810891341.0A CN109274466B (zh) 2018-08-07 2018-08-07 一种中间件报文传输方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810891341.0A CN109274466B (zh) 2018-08-07 2018-08-07 一种中间件报文传输方法及系统

Publications (2)

Publication Number Publication Date
CN109274466A true CN109274466A (zh) 2019-01-25
CN109274466B CN109274466B (zh) 2022-02-22

Family

ID=65153429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810891341.0A Active CN109274466B (zh) 2018-08-07 2018-08-07 一种中间件报文传输方法及系统

Country Status (1)

Country Link
CN (1) CN109274466B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111835712A (zh) * 2020-06-01 2020-10-27 北京百卓网络技术有限公司 一种数据传输方法、装置、系统、设备及存储介质
CN111899021A (zh) * 2020-08-04 2020-11-06 武汉众邦银行股份有限公司 一种实现超级网银来账业务自动回执的方法
CN112671877A (zh) * 2020-12-16 2021-04-16 中国建设银行股份有限公司 一种数据处理方法和装置
CN113312649A (zh) * 2021-06-23 2021-08-27 中国农业银行股份有限公司 报文处理方法、装置、设备、系统及存储介质
CN113422739A (zh) * 2021-06-21 2021-09-21 上海哔哩哔哩科技有限公司 数据传输方法、发送端及数据传输系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104980450A (zh) * 2014-04-01 2015-10-14 阿里巴巴集团控股有限公司 一种消息传递方法和系统及消息中间件
CN106101026A (zh) * 2016-06-07 2016-11-09 深圳证券通信有限公司 一种高可靠低延迟的udp多播方法
CN109741121A (zh) * 2018-09-29 2019-05-10 比亚迪股份有限公司 基于ActiveMQ的自动售检票系统和轨道交通系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104980450A (zh) * 2014-04-01 2015-10-14 阿里巴巴集团控股有限公司 一种消息传递方法和系统及消息中间件
CN106101026A (zh) * 2016-06-07 2016-11-09 深圳证券通信有限公司 一种高可靠低延迟的udp多播方法
CN109741121A (zh) * 2018-09-29 2019-05-10 比亚迪股份有限公司 基于ActiveMQ的自动售检票系统和轨道交通系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
唐翠微: "基于消息中间件的数据传输报送系统分析与设计", 《西南师范大学学报(自然科学版)》 *
康晓博: "CICS中间件及MQ在企业软件中的应用", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111835712A (zh) * 2020-06-01 2020-10-27 北京百卓网络技术有限公司 一种数据传输方法、装置、系统、设备及存储介质
CN111899021A (zh) * 2020-08-04 2020-11-06 武汉众邦银行股份有限公司 一种实现超级网银来账业务自动回执的方法
CN112671877A (zh) * 2020-12-16 2021-04-16 中国建设银行股份有限公司 一种数据处理方法和装置
CN113422739A (zh) * 2021-06-21 2021-09-21 上海哔哩哔哩科技有限公司 数据传输方法、发送端及数据传输系统
CN113312649A (zh) * 2021-06-23 2021-08-27 中国农业银行股份有限公司 报文处理方法、装置、设备、系统及存储介质

Also Published As

Publication number Publication date
CN109274466B (zh) 2022-02-22

Similar Documents

Publication Publication Date Title
CN109274466A (zh) 一种中间件报文传输方法及系统
US7327735B2 (en) System and method for detecting lost messages transmitted between modules in a communication device
US8997115B2 (en) Method for data delivery in a network
JPS5866448A (ja) パケット交換における誤り検出方式
US8812711B2 (en) Three-way communication protocol
US20110173495A1 (en) Method and System for Reliable Intersystem Message Notification
US20040081082A1 (en) Mechanism for enabling enhanced fibre channel error recovery across redundant paths using SCSI level commands
WO2015169057A1 (zh) 报文传输方法、装置及互联接口
CN105471714A (zh) 一种消息处理的方法和装置
CN106506124A (zh) 重传报文确定方法及装置
CN105700967A (zh) 一种外设部件内部互联PCIe设备及其检测方法
CN110460412A (zh) 用于数据传输的方法和rdma网卡
CN112769939B (zh) 一种用于实时通讯的大数据可靠传输方法
CN109039552B (zh) 一种数据恢复方法及装置
CN111526207A (zh) 数据传输方法及相关设备
US20080114853A1 (en) Network protocol for network communications
CN111162880B (zh) 数据发送方法、装置、设备及存储介质
WO2018040879A1 (zh) 一种密码键盘usb通信异常恢复方法及系统
OPDERBECK et al. WE INFLUENCE OF CONTROL PROCEDURES ON THE PERFORMANCE OF PACKET-SWITCHED NETWORKS
CN112055088B (zh) 一种基于光闸的文件可靠传输系统及其方法
CN106648949B (zh) 一种存储系统及数据传输方法
CN112698969A (zh) 一种基于消息落库的mq消息可靠性投递解决方法
CN109729101B (zh) 多层次低耦合的通信系统
CN107071058A (zh) 异步数据上传处理方法及系统
CN111984432A (zh) 一种基于netty框架的多类型文件解析上报系统

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
GR01 Patent grant
GR01 Patent grant