CN103634203B - 消息异步传输方法、装置和系统 - Google Patents

消息异步传输方法、装置和系统 Download PDF

Info

Publication number
CN103634203B
CN103634203B CN201310627584.0A CN201310627584A CN103634203B CN 103634203 B CN103634203 B CN 103634203B CN 201310627584 A CN201310627584 A CN 201310627584A CN 103634203 B CN103634203 B CN 103634203B
Authority
CN
China
Prior art keywords
message
module
network equipment
proxy module
content
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.)
Active
Application number
CN201310627584.0A
Other languages
English (en)
Other versions
CN103634203A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310627584.0A priority Critical patent/CN103634203B/zh
Publication of CN103634203A publication Critical patent/CN103634203A/zh
Application granted granted Critical
Publication of CN103634203B publication Critical patent/CN103634203B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种消息异步传输方法、装置和系统;其中的消息异步传输方法包括:代理模块接收其所在的网络设备中的消息发送端输出的消息;所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识;所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。

Description

消息异步传输方法、装置和系统
技术领域
本发明涉及消息传输技术,具体涉及一种消息异步传输方法以及相应的消息异步传输装置和消息异步传输系统。
背景技术
消息主要用于网络设备(尤其是服务器)之间的信息交互。消息异步传输由于其具有可降低消息发送端和消息接收端之间的系统耦合度、以及消息发送端和消息接收端不需要同时在线等特点,而在通讯系统中被广泛应用。
现有的消息异步传输通常是利用消息队列来实现的,其实现方式通常如图1所示。
在图1中,消息发送端(即图1中的Produer)对需要发送的消息进行压缩处理,并向消息接收端(即图1中的Consumer)发送压缩后的消息;压缩后的消息会被传输至消息代理端(即图1中的Broker);消息代理端将其接收到的消息存储在消息接收端对应的消息队列中;之后,消息代理端根据该消息队列对应的路由向消息接收端传输消息队列中的消息;在消息被成功传输至消息接收端之后,消息代理端会删除相应消息队列中存储的消息;在消息接收端不可用或者网络存在故障等情况下,消息代理端会在后续不断的尝试发送消息队列中的消息,直到消息队列中的消息被成功发送至消息接收端。
发明人在实现本发明过程中发现,在消息发送端与消息代理端之间的网络连接状态不太好,甚至出现网络中断的情况下,消息发送端发送消息的延迟会较高,甚至会出现消息发送失败的现象,对于发送失败的消息,用户需要在网络状态恢复正常后重新向消息接收端发送消息;从而现有的消息异步传输方式可能会使用户体验较差;另外,在消息发送端发送的消息所承载的消息内容较少的情况下,消息的压缩率通常会比较低;从而现有的消息异步传输方式会存在没有尽可能的节约网络带宽的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的消息异步传输方法和相应的消息异步传输装置以及相应的消息异步传输系统。
依据本发明的一个方面,提供了一种消息异步传输方法,用于在网络设备间传输消息,所述方法包括:网络设备中的代理模块接收其所在的网络设备中的消息发送端发送来的消息;所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识;所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。
根据本发明的另一方面,提供了一种消息异步传输装置,其包括:代理模块,且所述代理模块包括:接收模块,适于接收代理模块所在的网络设备中的消息发送端输出的消息;解析模块,适于对所述接收模块接收到的消息进行解析,以确定消息中承载的消息队列标识;封装模块,适于针对接收模块接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;压缩发送模块,适于对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。
根据本发明的再一方面,提供了一种消息异步传输系统,其包括:包含有消息发送端的第一网络设备、包含有消息代理端的第二网络设备以及包含有消息接收端的第三网络设备,其中,第二网络设备与第一网络设备和第三网络设备分别连接;所述第一网络设备还包含有上述消息异步传输装置,且消息异步传输装置与消息发送端连接;所述消息代理端适于,将第一网络设备传输来的消息传输至第三网络设备;所述消息接收端适于,对第二网络设备传输来的消息的消息体进行解压缩处理,并从解压缩处理后的消息体中获取消息体的内容。
本发明的消息异步传输方法、装置和系统通过在消息发送端所在的网络设备中设置代理模块,且该代理模块可以针对消息发送端输出的具有相同消息队列标识的多条消息的消息体中的内容和消息队列标识进行消息封装,使封装后的消息可以承载有多条消息的消息体中的内容;这样,封装后的消息的消息体所承载的内容的字符数通常会比较多,因此,对在该消息的消息体进行压缩处理后,相对于压缩处理前的消息长度而言,压缩处理后的消息长度可以得到有效减小;由于本发明的代理模块与消息发送端位于同一网络设备,因此,消息发送端所在的网络设备与消息代理端所在的网络设备之间的网络连接状态并不会影响到消息发送端与代理模块之间的消息传输;由于位于同一网络设备的代理模块与消息发送端之间信息传输速度快且信息发送失败的概率非常小,因此,消息发送端以及用户基本上均不会感觉到消息传输延迟甚至消息传输失败的问题,从而本发明节约了网络带宽,并提高了用户体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。说明书附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据现有技术的消息异步传输方法示意图;
图2示出了根据本发明实施例一的消息异步传输方法流程图;
图3示出了根据本发明实施例一的消息异步传输方法示意图;
图4示出了根据本发明实施例二的消息异步传输装置示意图;
图5示出了根据本发明实施例三的消息异步传输系统示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一、消息异步传输方法。下面结合图2和图3对本实施例的方法进行详细说明。
图2中,S100、代理模块接收其所在的网络设备中的消息发送端输出的消息。
具体的,本实施例中的代理模块(如图3中的Agent)和消息发送端(如图3中的Produer)位于同一网络设备中,也就是说,本实施例在消息发送端所在的网络设备中新增设置了代理模块,且该代理模块可以与其所在的网络设备中的消息发送端进行信息交互,以接收消息发送端输出的消息。
在本实施例中,消息发送端所输出的消息不会象现有技术的实现流程一样通过消息发送端所在的网络设备与消息代理端所在的网络设备之间的网络连接直接传输至消息代理端,而是先由与消息发送端位于同一网络设备的代理模块接收;一个具体的例子,代理模块的进程与消息发送端的进程之间通过进程间通讯的方式传输消息,即消息发送端的进程所输出的消息可以通过进程间通讯的方式传输至代理模块的进程。上述进程间通讯方式可以具体为有名管道通讯方式、信号量通讯方式、共享内存通讯方式或者套接字通讯方式等;例如,消息发送端的进程通过本地套接字向代理模块发送消息,代理模块的进程通过监听本地套接字接收消息发送端的进程发送的消息。消息发送端向代理模块发送的消息的消息体可以是未经过压缩处理的消息体。
网络设备中的消息发送端在将消息成功发送至与其处于同一网络设备中的代理模块之后,消息发送端可以向用户显示消息成功发送的提示信息,由于同一网络设备中的两模块之间的消息传输很难出现传输时间过长以及传输失败的现象,因此,对于用户以及消息发送端来说,基本上不会感觉到消息传输存在延迟以及消息传输失败的问题。
S110、代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识。
具体的,本步骤的第一种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,直接存储其接收到的消息(如将接收到的消息存储于本地硬盘中),在代理模块判断出其已存储的消息(即未向消息代理端发送的消息,也可以是之前未被代理模块执行过封装处理的消息)达到预定数量或者代理模块根据预定时间间隔判断出已到达本次消息发送时间时,代理模块对其存储的各消息(如之前未被代理模块执行过封装处理的消息)分别进行消息解析处理,以确定其存储的各消息的队列标识,并同时可以获取各消息的消息体中的内容。
本步骤的第二种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识,之后,代理模块根据消息中承载的消息队列标识将该消息存储在相应的存储区域(如本地硬盘中的存储区域),从而承载有相同消息队列标识的消息会被代理模块存储在相同的存储区域。
本步骤的第三种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识以及消息内容,之后,代理模块将该消息的消息队列标识以及消息内容作为一条消息记录存储(如将消息记录存储于本地磁盘)。在消息记录的存储过程中,代理模块可以将具有相同消息队列标识的消息记录存储在相同的存储区域中;当然,代理模块也可以不进行消息队列标识的区分而将所有的消息记录存储在同一存储区域中。
本实施例中的消息队列标识可以唯一表示出一个消息接收端,如该消息队列标识可以为URI。
S120、代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及上述消息队列标识进行消息封装处理。
具体的,消息封装处理步骤的一个具体例子为:针对具有相同消息队列标识的多条消息,代理模块将消息队列标识承载于新消息的消息头中,并计算具有相同消息队列标识的各消息的消息体的内容的长度,将每一条消息的消息体的内容以及其对应的长度承载于该新消息的消息体的相应的段中,即新消息的消息体根据上述多条消息的数量被划分为多个段,每一段均包括两部分内容,一部分内容为段长度,另一部分内容为上述多条消息中的一条消息的消息体的内容;该消息封装处理步骤还可以包括:代理模块计算该新消息的整个的消息长度以及该新消息的校验码等信息,并将计算出的整个消息的消息长度以及校验码等信息承载于新消息的消息头中;当然,该消息封装处理步骤还可以进行其他处理操作,如在新消息的消息头中设置消息体的压缩格式信息以及新消息中所包含的上述多条消息的数量信息(即消息体的段数)等,以形成一条完整的新消息。
代理模块封装处理后而形成的该新消息可以为基于HTTP的消息,也可以为基于私有协议的消息。在该封装处理后而形成的新消息为基于私有协议的消息的情况下,消息代理端和消息接收端应支持该私有协议。
另外,需要说明的是,如果在S110中,代理模块是按照第一种实现方式执行的解析操作,则代理模块在执行了S110的解析操作后,代理模块立即执行S120的封装步骤;如果在S110中,代理模块是按照第二种或者第三种实现方式执行的解析操作,则代理模块可以在其已存储的消息(即未向消息代理端发送的消息)/消息记录达到预定数量或者代理模块根据预定时间间隔判断出已到达本次消息发送时间时,代理模块再执行本步骤中的消息封装处理操作,且代理模块可以通过对其存储的消息进行解析而获取各消息的消息队列标识以及消息内容,代理模块也可以从其存储的消息记录中直接获取各消息的消息队列标识以及消息内容。
还有,代理模块可以对其存储的消息/消息记录进行标记,以表示出其存储的消息中已进行了封装处理的消息/消息记录以及未进行过封装处理的消息/消息记录。该标记操作可以在S110中执行(如代理模块按照第一种实现方式执行解析操作过程中对解析的消息进行标记),也可以在S120中执行(如代理模块在成功进行封装处理后,对该封装处理后的消息对应的其存储的相应消息/消息记录进行标记)。
S130、代理模块对封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息。
具体的,代理模块可以采用现有的消息压缩技术对上述封装处理后的消息的消息体进行压缩处理。由于本实施例的封装处理后的消息的消息体中通常会承载多条消息中的消息体的内容,因此,封装处理后的消息通常具有较多的字符数;而由于现有的压缩技术针对较多字符具有较高的压缩率,而针对较少字符具有较低的压缩率,因此,本实施例的代理模块向消息代理端发送的消息通常会具有较好的压缩率。
现有的压缩技术的压缩率的一个具体例子如下述表1所示。
表1
压缩前的字符串长度 压缩后的字符串长度 压缩率
10 27 170%
50 43 86%
100 55 55%
200 75 37.5%
500 132 26.4%
1024 227 22.17%
上述表1可明确表示出:如果按照现有的消息异步传输方式,在一条消息的消息体中承载的内容的字符数比较少的情况下,该消息的整个长度也会比较小,而压缩后的该消息的长度并没有得到有效的减小,在非常极端的情况下,压缩后的该消息的长度还会比压缩前的消息的长度更长(如表1中的第2行的记载);如果按照本发明的消息异步传输方式,消息的消息体中的内容的字符数通常会比较多,因此,压缩后的该消息的长度会得到有效的减少,从而本实施例的消息异步传输会节约网络带宽。
另外,如果代理模块所在的网络设备与消息代理端所在的网络设备之间的网络连接状态不太好,而由于代理模块与消息发送端是位于同一网络设备中,因此,两个网络设备(如两台服务器)之间的网络连接状态并不会影响一个网络设备内部的消息发送端与代理模块之间的消息传输;由于消息发送端在将消息发送给代理模块之后,消息发送端会认为消息成功发送,并会向用户显示消息成功发送的提示信息,因此,消息发送端以及用户均不会感觉到消息传输延迟的现象。
还有,在本实施例中,如果代理模块所在的网络设备与消息代理端所在的网络设备之间的网络连接状态不太好,甚至网络连接中断,则代理模块会持续的执行消息的重新发送的操作,直到消息被成功发送至消息代理端。
在消息被成功发送至消息代理端的情况下,代理模块应删除其存储的该消息对应的信息,如删除其存储的消息发送端传输来的相应的多个消息;再如,删除其存储的消息发送端传输来的多个消息对应的消息记录等。
本发明的消息接收端(即图3中的Consumer)应能够识别消息代理端发送来的消息,如消息接收端在接收到消息时,可以根据消息头中承载的消息体的段数获知该消息的消息体中承载的内容对应的消息数量,根据消息头中承载的压缩格式信息确定对消息体进行解压缩的方式,根据消息头中承载的整个消息长度确定消息的结束位置,根据消息体中的每段的段长度确定每段的结束位置。
实施例二、消息异步传输装置,该装置通常设置于服务器中,如设置于云端服务器中;当然,本发明也不排除该装置设置于网络终端设备中的可能性。本实施例的装置与和消息发送端位于同一网络设备中,且该装置中设置有代理模块,该装置主要用于实现上述方法实施例中的代理模块所执行的操作,也可以认为该装置即为上述代理模块。
下面结合图4对该装置进行详细说明。
图4中示出的装置主要包括:接收模块200、解析模块210、封装模块220、压缩发送模块230、重发模块240以及提示模块250;其中,解析模块210与接收模块200以及封装模块220分别连接,压缩发送模块230与封装模块220、重发模块240以及提示模块250分别连接,且重发模块240还与提示模块250连接。
接收模块200主要适于接收本实施例的装置所在的网络设备中的消息发送端输出的消息。
具体的,在本实施例中,消息发送端所输出的消息不会象现有技术的实现流程一样通过消息发送端所在的网络设备与消息代理端所在的网络设备之间的网络连接直接传输至消息代理端,而是先由与消息发送端位于同一网络设备的接收模块200接收;一个具体的例子,接收模块200通过本装置的进程与消息发送端的进程之间的进程间通讯的方式接收消息,即消息发送端的进程所输出的消息可以通过进程间通讯的方式传输至装置的进程,从而被接收模块200接收。上述进程间通讯方式可以具体为有名管道通讯方式、信号量通讯方式、共享内存通讯方式或者套接字通讯方式等;例如,消息发送端的进程通过本地套接字向本装置的进程发送消息,接收模块200通过监听本地套接字接收消息发送端的进程发送的消息。
网络设备中的消息发送端在将消息成功发送至与其处于同一网络设备中的本实施例的装置中的接收模块200之后,可以由提示模块250向用户显示消息成功发送的提示信息,由于同一网络设备中的两模块之间的消息传输很难出现传输时间过长以及传输失败的现象,因此,对于用户以及消息发送端来说,基本上不会感觉到消息传输存在延迟以及消息传输失败的问题。
解析模块210主要适于对接收模块200接收到的消息进行解析,以确定消息中承载的消息队列标识。
具体的,解析模块210的第一种实现方式可以具体为:解析模块210在接收模块200接收到消息发送端输出的消息时,直接存储接收模块200接收到的消息(如将接收到的消息存储于本地硬盘中),在解析模块210判断出其已存储的消息(即未向消息代理端发送的消息,也可以是之前未被代理模块执行过封装处理的消息)达到预定数量或者代理模块根据预定时间间隔判断出已到达本次消息发送时间时,解析模块210对其存储的各消息(如之前未被代理模块执行过封装处理的消息)分别进行消息解析处理,以确定其存储的各消息的队列标识,并同时可以获取各消息的消息体中的内容。
解析模块210的第二种实现方式可以具体为:解析模块210在接收模块200接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识,之后,解析模块210根据消息中承载的消息队列标识将该消息存储在相应的存储区域(如本地硬盘中的存储区域),从而承载有相同消息队列标识的消息会被解析模块210存储在相同的存储区域。
解析模块210的第三种实现方式可以具体为:解析模块210在接收模块200接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识以及消息内容,之后,解析模块210将该消息的消息队列标识以及消息内容作为一条消息记录存储(如将消息记录存储于本地磁盘)。在消息记录的存储过程中,解析模块210可以将具有相同消息队列标识的消息记录存储在相同的存储区域中;当然,解析模块210也可以不进行消息队列标识的区分而将所有的消息记录存储在同一存储区域中。
本实施例中的消息队列标识可以唯一表示出一个消息接收端,如该消息队列标识可以为URI。
封装模块220主要适于针对接收模块200接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及消息队列标识进行消息封装处理。
具体的,封装模块220所执行操作的一个具体例子为:针对具有相同消息队列标识的多条消息,封装模块220将消息队列标识承载于新消息的消息头中,并计算具有相同消息队列标识的各消息的消息体的内容的长度,将每一条消息的消息体的内容以及其对应的长度承载于该新消息的消息体的相应的段中,即新消息的消息体根据上述多条消息的数量被划分为多个段,每一段均包括两部分内容,一部分内容为段长度,另一部分内容为上述多条消息中的一条消息的消息体的内容;封装模块220所执行的消息封装处理步骤还可以包括:封装模块220计算该新消息的整个的消息长度以及该新消息的校验码等信息,并将计算出的整个消息的消息长度以及校验码等信息承载于新消息的消息头中;当然,封装模块220所执行的消息封装处理操作还可以包括其他处理操作,如封装模块220在新消息的消息头中设置消息体的压缩格式信息以及新消息中所包含的上述多条消息的数量信息(即消息体的段数)等,以形成一条完整的新消息。
封装模块220封装处理后而形成的该新消息可以为基于HTTP的消息,也可以为基于私有协议的消息。在该封装处理后而形成的新消息为基于私有协议的消息的情况下,消息代理端以及消息接收端应支持该私有协议。
另外,需要说明的是,如果解析模块210是按照第一种实现方式执行的解析操作,则解析模块210在执行了解析操作后,封装模块220立即执行封装步骤;如果解析模块210是按照第二种或者第三种实现方式执行的解析操作,则封装模块220可以在解析模块210已存储的消息(即未向消息代理端发送的消息)/消息记录达到预定数量或者封装模块220根据预定时间间隔判断出已到达本次消息发送时间时,封装模块220再执行上述消息封装处理操作,且封装模块220可以通过对上述存储的消息进行解析而获取各消息的消息队列标识以及消息内容,封装模块220也可以从上述存储的消息记录中直接获取各消息的消息队列标识以及消息内容。
还有,本实施例的装置可以对上述存储的消息/消息记录进行标记,以表示出上述存储的消息/消息记录中已进行了封装处理的消息/消息记录以及未进行过封装处理的消息/消息记录。该标记操作可以由解析模块210执行(如解析模块210按照第一种实现方式执行解析操作过程中对解析的消息进行标记),也可以由封装模块220执行(如封装模块220在成功进行封装处理后,对该封装处理后的消息/消息记录对应的其存储的相应消息进行标记)。
压缩发送模块230主要适于对封装模块220封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息。
重发模块240主要适于在压缩发送模块230压缩处理后的消息未被成功发送到消息代理端的情况下,持续重新发送该压缩处理后的消息。
在消息被成功发送至消息代理端的情况下,压缩发送模块230/重发模块240应删除上述存储的该消息对应的信息,如在压缩发送模块230将消息成功发送至消息代理端的情况下,压缩发送模块230删除上述存储的消息发送端传输来的相应的多个消息;再如,在压缩发送模块230将消息成功发送至消息代理端的情况下,压缩发送模块230删除上述存储的消息发送端传输来的多个消息对应的消息记录等;再如,在重发模块240将消息成功发送至消息代理端的情况下,重发模块240删除上述存储的消息发送端传输来的相应的多个消息;再如,在重发模块240将消息成功发送至消息代理端的情况下,重发模块240删除上述存储的消息发送端传输来的多个消息对应的消息记录等。
实施例三、消息异步传输系统。下面结合图5对该系统进行详细说明。
图5中示出的系统主要包括:第一网络设备500、第二网络设备510以及第三网络设备520,第二网络设备510与第一网络设备500和第三网络设备520分别连接。
第一网络设备500中设置有消息发送端501以及消息异步传输装置502,且消息发送端501与消息异步传输装置502连接。
消息发送端501主要适于输出其产生的消息,如通过进程间通讯等方式向消息异步传输装置502输出其产生的消息。
消息异步传输装置502主要适于对消息发送端501传输来的消息进行解析压缩等处理,并向第二网络设备510传输处理后的消息。消息异步传输装置502的结构如上述实施例二中的描述,在此不再详细说明。
第二网络设备510中设置有消息代理端511,该消息代理端511主要适于将第一网络设备500传输来的消息传输至第三网络设备520。
第三网络设备520中设置有消息接收端521,该消息接收端521主要适于对第三网络设备520接收到的消息的消息体进行解压缩处理,并从解压缩处理后的消息体中获取消息体的内容。
具体的,消息接收端521在第三网络设备520接收到消息时,可以根据消息头中承载的消息体的段数获知该消息的消息体中承载的内容对应的消息数量,消息接收端521可以根据消息头中承载的压缩格式信息确定对消息体进行解压缩的方式,消息接收端521可以根据消息头中承载的整个消息长度确定消息的结束位置,消息接收端521可以根据消息体中的每段的段长度确定每段的结束位置;从而消息接收端521在采用相应的解压缩方式对消息体进行解压缩后,可以从解压缩后的消息体中获取到消息发送端501输出的多条消息的消息体的内容。
A1、一种消息异步传输方法,用于在网络设备间传输消息,所述方法包括:
网络设备中的代理模块接收其所在的网络设备中的消息发送端发送来的消息;
所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识;
所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;
所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;
其中,所述消息代理端与所述消息发送端位于不同的网络设备。
A2、如A1所述的方法,其中,所述代理模块接收其所在的网络设备中的消息发送端发送来的消息包括:
代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息。
A3、如A2所述的方法,其中,所述代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息包括:
代理模块的进程通过监听本地套接字接收所述消息发送端的进程发送来的消息。
A4、如A1所述的方法,其中,所述代理模块对其接收到的消息进行解析,以确定消息的消息队列标识包括:
所述代理模块存储所述消息发送模块发送来的消息;
所述代理模块在其存储的消息达到预定数量和/或到达消息发送时间的情况下,所述代理模块对其接收到的各消息分别进行解析,以分别确定其接收到的各消息的消息队列标识。
A5、如A1所述的方法,其中,所述封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码。
A6、如A1所述的方法,其中,所述封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
A7、如A1至A6中任一所述的方法,其中,所述方法还包括:
所述代理模块在所述压缩处理后的消息未被成功发送到所述消息代理端的情况下,持续重新发送所述压缩处理后的消息;
所述代理模块在所述压缩处理后的消息被成功发送到所述消息代理端之后,删除其接收到的相应的消息。
A8、如A1至A6中任一所述的方法,其中,所述方法还包括:
网络设备中的消息发送端在将消息成功发送至所述网络设备中的代理模块之后,向用户显示消息成功发送的提示信息。
B9、一种消息异步传输装置,其包括:代理模块,且所述代理模块包括:
接收模块,适于接收代理模块所在的网络设备中的消息发送端输出的消息;
解析模块,适于对所述接收模块接收到的消息进行解析,以确定消息中承载的消息队列标识;
封装模块,适于针对接收模块接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;
压缩发送模块,适于对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;
其中,所述消息代理端与所述消息发送端位于不同的网络设备。
B10、如B9所述的装置,其中,所述接收模块还适于:
通过进程间通讯接收代理模块所在的网络设备中的消息发送端的进程发送来的消息。
B11、如B10所述的装置,其中,所述接收模块还适于:
通过监听本地套接字接收所述消息发送端的进程发送来的消息。
B12、如B9所述的装置,其中,所述解析模块还适于:
存储所述消息发送模块发送来的消息;
在所述存储的消息达到预定数量和/或到达消息发送时间的情况下,对接收模块接收到的各消息分别进行解析,以分别确定接收模块接收到的各消息的消息队列标识。
B13、如B9所述的装置,其中,所述封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码。
B14、如B9所述的装置,其中,所述封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
B15、如B9至B14中任一所述的装置,其中,所述装置还包括:
重发模块,适于在所述压缩处理后的消息未被成功发送到所述消息代理端的情况下,持续重新发送所述压缩处理后的消息;
且所述压缩发送模块/重发模块还适于在所述压缩处理后的消息被成功发送到所述消息代理端之后,删除所述接收模块接收到的相应的消息。
B16、如B9至B14中任一所述的装置,其中,所述装置还包括:
提示模块,适于在所述压缩发送模块将消息成功发送至所述代理模块之后,向用户显示消息成功发送的提示信息。
C17、一种消息异步传输系统,其包括:包含有消息发送端的第一网络设备、包含有消息代理端的第二网络设备以及包含有消息接收端的第三网络设备,其中,第二网络设备与第一网络设备和第三网络设备分别连接;
所述第一网络设备还包含有B9-B16中任一所述的消息异步传输装置,且消息异步传输装置与消息发送端连接;
所述消息代理端适于,将第一网络设备传输来的消息传输至第三网络设备;
所述消息接收端适于,对第二网络设备传输来的消息的消息体进行解压缩处理,并从解压缩处理后的消息体中获取消息体的内容。
C18、如C17所述的系统,其中,所述消息异步传输装置封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码;所述消息异步传输装置封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
C19、如C18所述的系统,其中,所述消息接收端还适于:
根据第三网络设备接收到的消息的消息头中承载的压缩格式信息对接收到的消息进行解压缩处理,并根据第三网络设备接收到的消息的消息头中承载的消息体所包含的内容所属消息的数量以及接收到的消息的消息体中承载的段长度获取消息体的内容。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的消息异步传输装置和系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是,上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (15)

1.一种消息异步传输方法,用于在网络设备间传输消息,所述方法包括:
网络设备中的代理模块接收其所在的网络设备中的消息发送端发送来的消息,其中代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息;
所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识及消息内容,代理模块将该消息的消息队列标识以及消息内容作为一条消息记录存储,其中,具有相同消息队列标识的消息记录存储在相同的存储区域中,所述消息队列标识唯一表示出一个消息接收端;
所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;
所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;
其中,所述消息代理端与所述消息发送端位于不同的网络设备。
2.如权利要求1所述的方法,其中,所述代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息包括:
代理模块的进程通过监听本地套接字接收所述消息发送端的进程发送来的消息。
3.如权利要求1所述的方法,其中,所述封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码。
4.如权利要求1所述的方法,其中,所述封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
5.如权利要求1至4中任一权利要求所述的方法,其中,所述方法还包括:
所述代理模块在所述压缩处理后的消息未被成功发送到所述消息代理端的情况下,持续重新发送所述压缩处理后的消息;
所述代理模块在所述压缩处理后的消息被成功发送到所述消息代理端之后,删除其接收到的相应的消息。
6.如权利要求1至4中任一权利要求所述的方法,其中,所述方法还包括:
网络设备中的消息发送端在将消息成功发送至所述网络设备中的代理模块之后,向用户显示消息成功发送的提示信息。
7.一种消息异步传输装置,其包括:代理模块,且所述代理模块包括:
接收模块,适于接收代理模块所在的网络设备中的消息发送端输出的消息,其进程通过进程间通讯接收代理模块所在的网络设备中的消息发送端的进程发送来的消息;
解析模块,适于对所述接收模块接收到的消息进行解析,以确定消息中承载的消息队列标识及消息内容,将该消息的消息队列标识以及消息内容作为一条消息记录存储,其中,具有相同消息队列标识的消息记录存储在相同的存储区域中,所述消息队列标识唯一表示出一个消息接收端;
封装模块,适于针对接收模块接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;
压缩发送模块,适于对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;
其中,所述消息代理端与所述消息发送端位于不同的网络设备。
8.如权利要求7所述的装置,其中,所述接收模块还适于:
通过监听本地套接字接收所述消息发送端的进程发送来的消息。
9.如权利要求7所述的装置,其中,所述封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码。
10.如权利要求7所述的装置,其中,所述封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
11.如权利要求7至10中任一权利要求所述的装置,其中,所述装置还包括:
重发模块,适于在所述压缩处理后的消息未被成功发送到所述消息代理端的情况下,持续重新发送所述压缩处理后的消息;
且所述压缩发送模块/重发模块还适于在所述压缩处理后的消息被成功发送到所述消息代理端之后,删除所述接收模块接收到的相应的消息。
12.如权利要求7至10中任一权利要求所述的装置,其中,所述装置还包括:
提示模块,适于在所述压缩发送模块将消息成功发送至所述代理模块之后,向用户显示消息成功发送的提示信息。
13.一种消息异步传输系统,其包括:包含有消息发送端的第一网络设备、包含有消息代理端的第二网络设备以及包含有消息接收端的第三网络设备,其中,第二网络设备与第一网络设备和第三网络设备分别连接;
所述第一网络设备还包含有权利要求7-12中任一权利要求所述的消息异步传输装置,且消息异步传输装置与消息发送端连接;
所述消息代理端适于,将第一网络设备传输来的消息传输至第三网络设备;
所述消息接收端适于,对第二网络设备传输来的消息的消息体进行解压缩处理,并从解压缩处理后的消息体中获取消息体的内容。
14.如权利要求13所述的系统,其中,所述消息异步传输装置封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码;所述消息异步传输装置封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
15.如权利要求14所述的系统,其中,所述消息接收端还适于:
根据第三网络设备接收到的消息的消息头中承载的压缩格式信息对接收到的消息进行解压缩处理,并根据第三网络设备接收到的消息的消息头中承载的消息体所包含的内容所属消息的数量以及接收到的消息的消息体中承载的段长度获取消息体的内容。
CN201310627584.0A 2013-11-29 2013-11-29 消息异步传输方法、装置和系统 Active CN103634203B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310627584.0A CN103634203B (zh) 2013-11-29 2013-11-29 消息异步传输方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310627584.0A CN103634203B (zh) 2013-11-29 2013-11-29 消息异步传输方法、装置和系统

Publications (2)

Publication Number Publication Date
CN103634203A CN103634203A (zh) 2014-03-12
CN103634203B true CN103634203B (zh) 2018-04-03

Family

ID=50214846

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310627584.0A Active CN103634203B (zh) 2013-11-29 2013-11-29 消息异步传输方法、装置和系统

Country Status (1)

Country Link
CN (1) CN103634203B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104092666A (zh) * 2014-06-20 2014-10-08 裴兆欣 一种文件传输方法及装置
CN106953884A (zh) * 2016-01-07 2017-07-14 中移(杭州)信息技术有限公司 中间件消息处理方法、装置及中间件平台
CN107317745A (zh) * 2017-06-06 2017-11-03 山东中创软件商用中间件股份有限公司 一种消费端与消息代理之间的消息传输方法及装置
CN107784552B (zh) * 2017-07-24 2021-01-12 深圳壹账通智能科技有限公司 信息推送任务执行方法、装置、计算机设备和存储介质
CN109391563B (zh) 2017-08-08 2022-04-05 华为技术有限公司 一种资源预留方法以及相关设备
CN111083066B (zh) * 2018-10-19 2022-04-29 北京奇虎科技有限公司 物联网系统、设备消息流转方法及装置
CN111198838B (zh) * 2019-12-30 2020-10-20 中国人民解放军军事科学院国防科技创新研究院 一种双轨信号异步传输链路系统
CN111984438B (zh) * 2020-09-02 2024-04-19 中国银行股份有限公司 消息传输方法、消息传输装置及消息传输系统
CN115426209B (zh) * 2022-11-07 2023-02-10 湖南三湘银行股份有限公司 基于消息处理的高可靠消息队列广播控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101094167A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种提高消息服务器处理效率的方法
CN102111301A (zh) * 2011-03-28 2011-06-29 上海云高软件科技有限公司 一种通用文件传输系统及其实现方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434139B1 (en) * 1999-08-10 2002-08-13 Lucent Technologies Inc. Method for optimizing mobile wireless communications routed across plural interconnected networks
CN100496044C (zh) * 2004-06-29 2009-06-03 杭州华三通信技术有限公司 消息传送方法及装置
CN101369977A (zh) * 2008-09-18 2009-02-18 华为技术有限公司 数据传输的方法、装置和系统
CN102405631B (zh) * 2009-02-20 2015-02-18 思杰系统有限公司 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
CN101707623A (zh) * 2009-11-11 2010-05-12 中兴通讯股份有限公司 一种小内存系统中的文件发送方法及装置
CN101883108B (zh) * 2010-06-29 2014-12-10 中兴通讯股份有限公司 动态认证的文件传输方法及系统
CN103023796B (zh) * 2012-12-25 2015-08-19 中国科学院深圳先进技术研究院 网络数据压缩方法和系统
CN103067396B (zh) * 2012-12-29 2016-04-13 深圳先进技术研究院 三维gis异步通信传输系统及其异步通信传输的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101094167A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种提高消息服务器处理效率的方法
CN102111301A (zh) * 2011-03-28 2011-06-29 上海云高软件科技有限公司 一种通用文件传输系统及其实现方法

Also Published As

Publication number Publication date
CN103634203A (zh) 2014-03-12

Similar Documents

Publication Publication Date Title
CN103634203B (zh) 消息异步传输方法、装置和系统
CN110913000A (zh) 业务信息的处理方法、系统和计算机可读存储介质
CN105359487B (zh) 通过网络浏览器中的uri去引用监控nat行为的方法
CN109451032B (zh) 一种消息传递系统
CN103971687B (zh) 一种语音识别系统中的负载均衡实现方法和装置
CN104322020A (zh) 服务器、路由器、接收终端及处理方法
CN108418884A (zh) 一种传输业务数据的方法、装置及电子设备
CN106657426A (zh) 域名解析请求的处理方法、装置及服务器
JP2011512730A5 (zh)
CN110324405B (zh) 消息发送方法、装置、系统及计算机可读存储介质
CN113630465B (zh) 消息处理方法、装置、设备以及存储介质
WO2022062407A1 (zh) 链路的监控方法、装置、存储介质以及电子装置
EP3174334B1 (en) Apparatus and method for data delivery in delay-tolerant network (dtn)
CN111611129B (zh) PaaS云平台的性能监控方法及装置
CN105450479A (zh) 一种监控模块的方法及装置
CN106027566B (zh) 基于sip传输协议的移动心电采集及诊断系统
CN107395559A (zh) 基于redis的数据处理方法及设备
KR101809365B1 (ko) M2M/IoT 플랫폼에서 MQTT 프로토콜을 활용한 메시지 단편화 방법
CN109862438A (zh) 一种代理转发实时流协议流媒体数据的方法及设备
CN108337163A (zh) 用于汇聚链路的方法和装置
CN104580346A (zh) 数据传输方法及装置
JP2014057149A (ja) 通信装置、中継装置および通信方法
CN104660381B (zh) 通信方法和设备
CN110825538A (zh) 一种基于mq可自定义数据类型动态进行数据交互的方法
CN107888683A (zh) 一种客户端交互方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.