消息异步传输方法、装置和系统的制作方法

文档序号:7778331阅读:138来源:国知局
消息异步传输方法、装置和系统的制作方法
【专利摘要】本发明公开了一种消息异步传输方法、装置和系统;其中的消息异步传输方法包括:代理模块接收其所在的网络设备中的消息发送端输出的消息;所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识;所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。
【专利说明】消息异步传输方法、装置和系统
【技术领域】
[0001]本发明涉及消息传输技术,具体涉及一种消息异步传输方法以及相应的消息异步传输装置和消息异步传输系统。
【背景技术】
[0002]消息主要用于网络设备(尤其是服务器)之间的信息交互。消息异步传输由于其具有可降低消息发送端和消息接收端之间的系统耦合度、以及消息发送端和消息接收端不需要同时在线等特点,而在通讯系统中被广泛应用。
[0003]现有的消息异步传输通常是利用消息队列来实现的,其实现方式通常如图1所
/Jn ο
[0004]在图1中,消息发送端(即图1中的Produer)对需要发送的消息进行压缩处理,并向消息接收端(即图1中的Consumer)发送压缩后的消息;压缩后的消息会被传输至消息代理端(即图1中的Broker);消息代理端将其接收到的消息存储在消息接收端对应的消息队列中;之后,消息代理端根据该消息队列对应的路由向消息接收端传输消息队列中的消息;在消息被成功传输至消息接收端之后,消息代理端会删除相应消息队列中存储的消息;在消息接收端不可用或者网络存在故障等情况下,消息代理端会在后续不断的尝试发送消息队列中的消息,直到消息队列中的消息被成功发送至消息接收端。
[0005]发明人在实现本发明过程中发现,在消息发送端与消息代理端之间的网络连接状态不太好,甚至出现网络中断的情况下,消息发送端发送消息的延迟会较高,甚至会出现消息发送失败的现象,对于发送失败的消息,用户需要在网络状态恢复正常后重新向消息接收端发送消息;从而现有的消息异步传输方式可能会使用户体验较差;另外,在消息发送端发送的消息所承载的消息内容较少的情况下,消息的压缩率通常会比较低;从而现有的消息异步传输方式会存在没有尽可能的节约网络带宽的问题。

【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的消息异步传输方法和相应的消息异步传输装置以及相应的消息异步传输系统。
[0007]依据本发明的一个方面,提供了一种消息异步传输方法,用于在网络设备间传输消息,所述方法包括:网络设备中的代理模块接收其所在的网络设备中的消息发送端发送来的消息;所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识;所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。
[0008]根据本发明的另一方面,提供了一种消息异步传输装置,其包括:代理模块,且所述代理模块包括:接收模块,适于接收代理模块所在的网络设备中的消息发送端输出的消息;解析模块,适于对所述接收模块接收到的消息进行解析,以确定消息中承载的消息队列标识;封装模块,适于针对接收模块接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理;压缩发送模块,适于对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息;其中,所述消息代理端与所述消息发送端位于不同的网络设备。
[0009]根据本发明的再一方面,提供了一种消息异步传输系统,其包括:包含有消息发送端的第一网络设备、包含有消息代理端的第二网络设备以及包含有消息接收端的第三网络设备,其中,第二网络设备与第一网络设备和第三网络设备分别连接;所述第一网络设备还包含有上述消息异步传输装置,且消息异步传输装置与消息发送端连接;所述消息代理端适于,将第一网络设备传输来的消息传输至第三网络设备;所述消息接收端适于,对第二网络设备传输来的消息的消息体进行解压缩处理,并从解压缩处理后的消息体中获取消息体的内容。
[0010]本发明的消息异步传输方法、装置和系统通过在消息发送端所在的网络设备中设置代理模块,且该代理模块可以针对消息发送端输出的具有相同消息队列标识的多条消息的消息体中的内容和消息队列标识进行消息封装,使封装后的消息可以承载有多条消息的消息体中的内容;这样,封装后的消息的消息体所承载的内容的字符数通常会比较多,因此,对在该消息的消息体进行压缩处理后,相对于压缩处理前的消息长度而言,压缩处理后的消息长度可以得到有效减小;由于本发明的代理模块与消息发送端位于同一网络设备,因此,消息发送端所在的网络设备与消息代理端所在的网络设备之间的网络连接状态并不会影响到消息发送端与代理模块之间的消息传输;由于位于同一网络设备的代理模块与消息发送端之间信息传输速度快且信息发送失败的概率非常小,因此,消息发送端以及用户基本上均不会感觉到消息传输延迟甚至消息传输失败的问题,从而本发明节约了网络带宽,并提闻了用户体验。
[0011]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0012]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。说明书附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0013]图1示出了根据现有技术的消息异步传输方法示意图;
[0014]图2示出了根据本发明实施例一的消息异步传输方法流程图;
[0015]图3示出了根据本发明实施例一的消息异步传输方法示意图;
[0016]图4示出了根据本发明实施例二的消息异步传输装置示意图;
[0017]图5示出了根据本发明实施例三的消息异步传输系统示意图。
【具体实施方式】
[0018]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0019]实施例一、消息异步传输方法。下面结合图2和图3对本实施例的方法进行详细说明。
[0020]图2中,S100、代理模块接收其所在的网络设备中的消息发送端输出的消息。
[0021 ] 具体的,本实施例中的代理模块(如图3中的Agent)和消息发送端(如图3中的PiOduer)位于同一网络设备中,也就是说,本实施例在消息发送端所在的网络设备中新增设置了代理模块,且该代理模块可以与其所在的网络设备中的消息发送端进行信息交互,以接收消息发送端输出的消息。
[0022]在本实施例中,消息发送端所输出的消息不会象现有技术的实现流程一样通过消息发送端所在的网络设备与消息代理端所在的网络设备之间的网络连接直接传输至消息代理端,而是先由与消息发送端位于同一网络设备的代理模块接收;一个具体的例子,代理模块的进程与消息发送端的进程之间通过进程间通讯的方式传输消息,即消息发送端的进程所输出的消息可以通过进程间通讯的方式传输至代理模块的进程。上述进程间通讯方式可以具体为有名管道通讯方式、信号量通讯方式、共享内存通讯方式或者套接字通讯方式等;例如,消息发送端的进程通过本地套接字向代理模块发送消息,代理模块的进程通过监听本地套接字接收消息发送端的进程发送的消息。消息发送端向代理模块发送的消息的消息体可以是未经过压缩处理的消息体。
[0023]网络设备中的消息发送端在将消息成功发送至与其处于同一网络设备中的代理模块之后,消息发送端可以向用户显示消息成功发送的提示信息,由于同一网络设备中的两模块之间的消息传输很难出现传输时间过长以及传输失败的现象,因此,对于用户以及消息发送端来说,基本上不会感觉到消息传输存在延迟以及消息传输失败的问题。
[0024]S110、代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识。
[0025]具体的,本步骤的第一种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,直接存储其接收到的消息(如将接收到的消息存储于本地硬盘中),在代理模块判断出其已存储的消息(即未向消息代理端发送的消息,也可以是之前未被代理模块执行过封装处理的消息)达到预定数量或者代理模块根据预定时间间隔判断出已到达本次消息发送时间时,代理模块对其存储的各消息(如之前未被代理模块执行过封装处理的消息)分别进行消息解析处理,以确定其存储的各消息的队列标识,并同时可以获取各消息的消息体中的内容。
[0026]本步骤的第二种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识,之后,代理模块根据消息中承载的消息队列标识将该消息存储在相应的存储区域(如本地硬盘中的存储区域),从而承载有相同消息队列标识的消息会被代理模块存储在相同的存储区域。
[0027]本步骤的第三种实现方式可以具体为:代理模块在接收到消息发送端输出的消息时,立即对该消息进行解析处理,以确定该消息中承载的消息队列标识以及消息内容,之后,代理模块将该消息的消息队列标识以及消息内容作为一条消息记录存储(如将消息记录存储于本地磁盘)。在消息记录的存储过程中,代理模块可以将具有相同消息队列标识的消息记录存储在相同的存储区域中;当然,代理模块也可以不进行消息队列标识的区分而将所有的消息记录存储在同一存储区域中。
[0028]本实施例中的消息队列标识可以唯一表示出一个消息接收端,如该消息队列标识可以为URI。
[0029]S120、代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及上述消息队列标识进行消息封装处理。
[0030]具体的,消息封装处理步骤的一个具体例子为:针对具有相同消息队列标识的多条消息,代理模块将消息队列标识承载于新消息的消息头中,并计算具有相同消息队列标识的各消息的消息体的内容的长度,将每一条消息的消息体的内容以及其对应的长度承载于该新消息的消息体的相应的段中,即新消息的消息体根据上述多条消息的数量被划分为多个段,每一段均包括两部分内容,一部分内容为段长度,另一部分内容为上述多条消息中的一条消息的消息体的内容;该消息封装处理步骤还可以包括:代理模块计算该新消息的整个的消息长度以及该新消息的校验码等信息,并将计算出的整个消息的消息长度以及校验码等信息承载于新消息的消息头中;当然,该消息封装处理步骤还可以进行其他处理操作,如在新消息的消息头中设置消息体的压缩格式信息以及新消息中所包含的上述多条消息的数量信息(即消息体的段数)等,以形成一条完整的新消息。
[0031]代理模块封装处理后而形成的该新消息可以为基于HTTP的消息,也可以为基于私有协议的消息。在该封装处理后而形成的新消息为基于私有协议的消息的情况下,消息代理端和消息接收端应支持该私有协议。
[0032]另外,需要说明的是,如果在SllO中,代理模块是按照第一种实现方式执行的解析操作,则代理模块在执行了 Slio的解析操作后,代理模块立即执行S120的封装步骤;如果在SllO中,代理模块是按照第二种或者第三种实现方式执行的解析操作,则代理模块可以在其已存储的消息(即未向消息代理端发送的消息)/消息记录达到预定数量或者代理模块根据预定时间间隔判断出已到达本次消息发送时间时,代理模块再执行本步骤中的消息封装处理操作,且代理模块可以通过对其存储的消息进行解析而获取各消息的消息队列标识以及消息内容,代理模块也可以从其存储的消息记录中直接获取各消息的消息队列标识以及消息内容。
[0033]还有,代理模块可以对其存储的消息/消息记录进行标记,以表示出其存储的消息中已进行了封装处理的消息/消息记录以及未进行过封装处理的消息/消息记录。该标记操作可以在SllO中执行(如代理模块按照第一种实现方式执行解析操作过程中对解析的消息进行标记),也可以在S120中执行(如代理模块在成功进行封装处理后,对该封装处理后的消息对应的其存储的相应消息/消息记录进行标记)。
[0034]S130、代理模块对封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息。
[0035]具体的,代理模块可以采用现有的消息压缩技术对上述封装处理后的消息的消息体进行压缩处理。由于本实施例的封装处理后的消息的消息体中通常会承载多条消息中的消息体的内容,因此,封装处理后的消息通常具有较多的字符数;而由于现有的压缩技术针对较多字符具有较高的压缩率,而针对较少字符具有较低的压缩率,因此,本实施例的代理模块向消息代理端发送的消息通常会具有较好的压缩率。[0036]现有的压缩技术的压缩率的一个具体例子如下述表1所示。
[0037]表1
[0038]
【权利要求】
1.一种消息异步传输方法,用于在网络设备间传输消息,所述方法包括: 网络设备中的代理模块接收其所在的网络设备中的消息发送端发送来的消息; 所述代理模块对其接收到的消息进行解析,以确定消息中承载的消息队列标识; 所述代理模块针对其接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理; 所述代理模块对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息; 其中,所述消息代理端与所述消息发送端位于不同的网络设备。
2.如权利要求1所述的方法,其中,所述代理模块接收其所在的网络设备中的消息发送端发送来的消息包括: 代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息。
3.如权利要求2所述的方法,其中,所述代理模块的进程通过进程间通讯接收其所在的网络设备中的消息发送端的进程发送来的消息包括: 代理模块的进程通过监听本地套接字接收所述消息发送端的进程发送来的消息。
4.如权利要求1所述的方法,其中,所述代理模块对其接收到的消息进行解析,以确定消息的消息队列标识包括: 所述代理模块存储所述消息发送模块发送来的消息; 所述代理模块在其存储的消息达到预定数量和/或到达消息发送时间的情况下,所述代理模块对其接收到的各消息分别进行解析,以分别确定其接收到的各消息的消息队列标识。
5.如权利要求1所述的方法,其中,所述封装处理后的消息的消息头中承载有消息队列标识、消息体所包含的内容所属消息的数量、压缩格式信息以及校验码。
6.如权利要求1所述的方法,其中,所述封装处理后的消息的消息体被划分为至少一段,每一段均承载有段长度以及代理模块接收到的具有相同消息队列标识的消息的消息体的内容。
7.如权利要求1至6中任一权利要求所述的方法,其中,所述方法还包括: 所述代理模块在所述压缩处理后的消息未被成功发送到所述消息代理端的情况下,持续重新发送所述压缩处理后的消息; 所述代理模块在所述压缩处理后的消息被成功发送到所述消息代理端之后,删除其接收到的相应的消息。
8.如权利要求1至6中任一权利要求所述的方法,其中,所述方法还包括: 网络设备中的消息发送端在将消息成功发送至所述网络设备中的代理模块之后,向用户显示消息成功发送的提示信息。
9.一种消息异步传输装置,其包括:代理模块,且所述代理模块包括: 接收模块,适于接收代理模块所在的网络设备中的消息发送端输出的消息; 解析模块,适于对所述接收模块接收到的消息进行解析,以确定消息中承载的消息队列标识; 封装模块,适于针对 接收模块接收到的承载有相同消息队列标识的至少一条消息的消息体的内容以及所述消息队列标识进行消息封装处理; 压缩发送模块,适于对所述封装处理后的消息的消息体进行压缩处理,并向消息代理端发送压缩处理后的消息; 其中,所述消息代理端与所述消息发送端位于不同的网络设备。
10.一种消息异步传输系统,其包括:包含有消息发送端的第一网络设备、包含有消息代理端的第二网络设备以及包含有消息接收端的第三网络设备,其中,第二网络设备与第一网络设备和第三网络设备分别连接; 所述第一网络设备还包含有权利要求9-16中任一权利要求所述的消息异步传输装置,且消息异步传输装置与消息发送端连接; 所述消息代理端适于,将第一网络设备传输来的消息传输至第三网络设备; 所述消息接收端适于,对第二网络设备传输来的消息的消息体进行解压缩处理,并从解压 缩处理后的消息体中获取消息体的内容。
【文档编号】H04L12/58GK103634203SQ201310627584
【公开日】2014年3月12日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】王超, 朱超, 陈飞, 代兵 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1