发明内容
本发明的主要目的是提供一种消息路由的方法与装置,以解决现有技术中路由表可读性差的问题。本发明的其他目的是解决一点对多点等多种传输模式以及需要断点续传的场合中的数据交换问题,以及对消息路由功能难于进行扩充和扩展的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种消息路由的方法。
本发明的消息路由的方法包括:在数据交换服务器收到待路由的消息的属性后,按照路由规则,在XML文件中记录待路由的消息的各个数据包与该数据包的接收端之间的对应关系;确认数据交换服务器收到所述待路由消息的数据包,然后根据所述XML文件的内容确定所述数据包的接收端,将所述数据包转发至该数据包的接收端,然后在所述XML文件中删除已转发的数据包与该数据包的接收端之间的对应关系。
进一步地,在根据所述XML文件的内容确定待转发的数据包的接收端之前,在所述XML文件中记录所述待路由的消息的所有接收端;当确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包之后,在所述XML文件中删除该接收端的记录。
进一步地,在所述确认数据交换服务器已收到所述待路由消息的所有数据包之前,当确认所述数据交换服务器已接收的数据包数目小于所述属性中记载的数据包数目时,在所述XML文件中记录包完备标志为第一内容,当确认所述数据交换服务器已接收的数据包数目等于所述属性中记载的数据包数目时,在所述XML文件中记录所述包完备标志为第二内容;所述确认所述数据交换服务器已收到所述待路由消息的所有数据包,包括:根据所述包完备标志为第二内容确认所述数据交换服务器已收到所述待路由消息的所有数据包。
进一步地,所述确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包之前,若数据交换服务器已接收的某消息的数据包和某接收端均不存在对应关系且包完备标记为第二内容,则确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包。
进一步地,所述方法还包括:确认所述XML文件中接收端的记录为空,然后删除所述XML文件中记录的所述对应关系和所述待路由的消息的所有接收端。
根据本发明的另一方面,提供了一种消息路由的装置。
本发明的消息路由的装置包括:接收模块,用于在数据交换服务器收到待路由的消息的属性后,按照路由规则,在XML文件中记录待路由的消息的各个数据包与该数据包的接收端之间的对应关系;转发模块,用于确认数据交换服务器收到待路由消息的数据包,然后根据所述XML文件的内容确定待转发的数据包的接收端,将待转发的数据包转发至该数据包的接收端,然后在所述XML文件中删除已转发的数据包与该数据包的接收端之间的对应关系。
进一步地,还包括接收端记录模块,用于:在所述转发模块根据所述XML文件的内容确定待转发的数据包的接收端之前,在所述XML文件中记录所述待路由的消息的所有接收端;确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包,然后在所述XML文件中删除该接收端的记录。
进一步地,还包括标志模块,用于:确认所述数据交换服务器已接收的数据包数目小于所述属性中记载的数据包数目,然后在所述XML文件中记录包完备标志为第一内容,以及确认所述数据交换服务器已接收的数据包数目等于所述属性中记载的数据包数目,在所述XML文件中记录所述包完备标志为第二内容;所述转发模块还用于:根据所述包完备标志为第二内容确认所述数据交换服务器已收到所述待路由消息的所有数据包。
进一步地,所述标志模块还用于:在所述接收端记录模块确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包之前,若数据交换服务器已接收的某消息的数据包和某接收端均不存在对应关系且包完备标记为第二内容,则确认所述数据交换服务器向一个所述接收端转发完成所述待路由的消息的所有数据包。
进一步地,还包括删除模块,用于确认所述XML文件中接收端的记录为空,然后删除所述XML文件中记录的所述对应关系和所述待路由的消息的所有接收端。
根据本发明的技术方案,采用XML文件记录待路由的消息的各个数据包与该数据包的接收端之间的对应关系从而形成路由表,因XML文件本身具有较好的可读性,由此提高了路由表的可读性。本发明实施例中的路由表还能够支持一点对多点的数据传送方式。此外,本实施例中,在路由表内设置了包完备标志,使路由表能够对于数据交换过程中的接收进程和转发进程都做出标识,由此扩展了路由表的功能;当接收端由不在线变为在线时,可以根据XML格式的路由表继续向该接收端转发数据,由此实现了断点续传的功能。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是根据本发明实施例的消息路由的方法的示意图,如图1所示,该方法主要包括如下步骤:
步骤S11:在数据交换服务器收到待路由的消息的属性后,按照路由规则,在可扩展标记语言XML文件中记录待路由的消息中的各个数据包与该数据包的接收端之间的对应关系。
步骤S13:确认数据交换服务器收到待路由消息的数据包,然后根据XML文件的内容确定待转发的数据包的接收端;
步骤S 15:将待转发的数据包转发至该数据包的接收端;
步骤S17:从XML文件删除已转发的数据包与该数据包的接收端之间的对应关系。
根据上述步骤,采用XML文件记录待路由的消息中的各个数据包与该数据包的接收端之间的对应关系从而形成路由表,因XML文件本身具有较好的可读性,由此提高了路由表的可读性。
如果待转发的消息需要转发给多个接收端,则步骤S13中根据XML文件的内容确定待转发的数据包的接收端之前,可以在该XML文件中记录待路由的消息的所有接收端;当确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包之后,在该XML文件中删除该接收端的记录。这样,路由表能够支持一点对多点的数据传送方式。
步骤S13中确认数据交换服务器已收到待路由消息的所有数据包之前,可以对数据包的接收进程做出判断,当确认数据交换服务器已接收的数据包数目小于待路由消息的属性中记载的数据包数目时,在上述XML文件中记录包完备标志为第一内容,当确认数据交换服务器已接收的数据包数目等于待路由消息的属性中记载的数据包数目时,在XML文件中记录该包完备标志为第二内容;这样,在步骤S13中可以根据包完备标志为第二内容来确认数据交换服务器已收到待路由消息的所有数据包。
在确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包之前,若数据交换服务器已接收的某消息的数据包和某接收端均不存在对应关系且包完备标记为第二内容,则确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包。
可以看出,本实施例中在路由表内设置了包完备标志,使路由表能够对于数据交换过程中的接收进程和转发进程都做出标识,由此扩展了路由表的功能。
此外,为了节省路由表所占用的存储装置的空间,还可以在确认XML文件中接收端的记录为空之后,删除XML文件中记录的上述对应关系和待路由的消息的所有接收端。
以下通过一个具体的例子对本发明实施例的技术方案作更详细的说明。如图2所示,图2是根据本发明实施例的一种数据交换网络的结构示意图。如图2中示出了一个发送端、数据交换服务器以及两个接收端App1和App2。基于图2所示的数据交换网络,该例子中主要按图3和图4所示的流程进行处理,图3是根据本发明实施例的一种消息属性的处理流程示意图,图4是根据本发明实施例的一种消息数据包的处理流程示意图。若收到消息属性则执行图3的流程;若收到数据包,则执行图4的流程。以下对本例中的具体步骤做出说明。
步骤一:数据交换服务器收到发送端发送的消息属性时在XML格式的消息路由表建立一个XML元素作为该消息的消息路由项,消息路由项以消息ID作为元素名,此处消息ID为CU81AJ630001,从消息属性获取消息的包总数为2,将包完备标记AllReady设置为假,此处以false表示;
步骤二:数据交换服务器根据消息路由规则得到ID为CU81AJ630001的消息有App1和App2两个接收端,在CU81AJ630001消息路由项下建立消息接受端列表SubscriberList元素和包列表PackList元素,在消息接收端列表元素SubscriberList中为App1和App2分别创建一个XML子元素<_App1/>和<_App2/>,由于接收端名称可能为数字,XML不支持数字名开头的元素名,因此在前面加“_”进行转义。数据交换服务器创建每个子元素代表一个接收端,此时XML路由表如下;
步骤三:数据交换服务器收到消息的第一个数据包,从元素名为CU81AJ630001的消息路由项的消息接收端列表元素得到两个接收端App1和App2,在数据包列表PackList元素下创建一个数据包接收端列表元素,在该元素中保存了App1和App2两个接收端,新建的数据包接收端列表元素名为<P1>,由于数据包序号为数字,XML不支持数字名开头的元素名,因此在前面加“P”进行转义。此时XML路由表如下:
步骤四:数据交换服务器收到消息的第二个数据包,从元素名为CU81AJ630001的消息路由项得到两个接收端App1和App2,在数据包列表PackList元素下创建一个数据包接收端列表元素<P2>,在该元素中保存App1和App2两个接收端,由此形成了待路由的消息中的各个数据包与该数据包的接收端之间的对应关系,即,数据包1对应接收端App1和App2,数据包2对应接收端App1和App2。在此包序号2和包总数2相等,将包完备标记AllReady设置为true;
步骤五:假定App1接收端在线App2不在线,数据交换服务器将消息的第一个数据包转发给在线的App1接收端,转发成功后从所述数据包接收端列表P1删除转发成功的App1接收端,此时XML路由表如下:
步骤六:数据交换服务器将消息的第二个数据包转发给在线的App1接收端,转发成功后从数据包接收端列表P2删除转发成功的App1接收端;由于消息ID为CU81AJ630001的两个数据包都已转发给App1接收端,且消息路由项的包完备标记为true,从消息接收端列表删除<_App1>子元素,此时XML路由表如下:
步骤七:假定App2接收端和数据交换服务器建立连接,连接成功后数据交换服务器将消息的第一个数据包转发给在线的App2接收端,转发成功后从数据包接收端列表P1删除转发成功的App2接收端,数据交换服务器判断数据包列表P1为空,从数据包列表PackList元素删除数据包接收端列表元素<P1>,此时XML路由表如下:
从本步骤可以看出,当接收端由不在线变为在线时,可以根据XML格式的路由表继续向该接收端转发数据,由此实现了断点续传的功能。
步骤八:数据交换服务器将消息的第二个数据包转发给在线的App2接收端,转发成功后从数据包接收端列表P2删除转发成功的App2接收端;由于消息ID为CU81AJ630001的两个数据包都已转发给App2接收端,且消息路由项的包完备标记为true,消息接收端列表已经不再有未转发的元素,此时删除整个CU81AJ630001消息路由项,消息路由表如下:
<?xml version=″1.0″encoding=″utf-8″?>
<MessageList>
</MessageList>
以上的实例是以消息为2个数据包、路由结果为2个接收端为例进行了说明,在实际系统中,消息的数据包可以是1个或2个以上,消息接收端也可以是1个或2个以上,都可以按照本实施例的方式进行处理。
以下对于本发明实施例中的消息路由的装置做出说明。本发明实施例的消息路由的装置可以设置在数据交换服务器中。图5是根据本发明实施例的消息路由的装置基本结构的示意图。如图5所示,消息路由的装置50主要包括接收模块51和转发模块52,其中接收模块51用于在数据交换服务器收到待路由的消息的属性后,按照路由规则,在XML文件中记录待路由的消息中的各个数据包与该数据包的接收端之间的对应关系;转发模块52用于在数据交换服务器收到所述待路由消息的数据包后,根据所述XML文件的内容确定待转发的数据包的接收端,将待转发的数据包转发至该数据包的接收端,然后在所述XML文件中删除已转发的数据包与该数据包的接收端之间的对应关系。
消息路由的装置50还可包括接收端记录模块(图中未示出),用于:在转发模块52根据XML文件的内容确定待转发的数据包的接收端之前,在所述XML文件中记录待路由的消息的所有接收端;确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包,然后在XML文件中删除该接收端的记录。
消息路由的装置50还可包括标志模块(图中未示出),用于:确认数据交换服务器已接收的数据包数目小于待路由的消息的属性中记载的数据包数目,然后在XML文件中记录包完备标志为第一内容,以及确认数据交换服务器已接收的数据包数目等于该属性中记载的数据包数目,在XML文件中记录包完备标志为第二内容。此处的第一内容可以是“0”或者“假”或者“False”,相应地,第二内容可以是“1”或者“真”或者“True”。这样,转发模块还可用于根据包完备标志为第二内容确认数据交换服务器已收到待路由消息的所有数据包。
标志模块还可用于在接收端记录模块确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包之前,若数据交换服务器已接收的某消息的数据包和某接收端均不存在对应关系且包完备标记为第二内容,则确认数据交换服务器向一个接收端转发完成待路由的消息的所有数据包。
消息路由的装置50还可包括删除模块(图中未示出),用于确认XML文件中接收端的记录为空,然后删除XML文件中记录的上述对应关系和待路由的消息的所有接收端。
根据本发明实施例的技术方案,采用XML文件记录待路由的消息中的各个数据包与该数据包的接收端之间的对应关系从而形成路由表,因XML文件本身具有较好的可读性,所以由此提高了路由表的可读性。本发明实施例中的路由表还能够支持一点对多点的数据传送方式。此外,本实施例中,在路由表内设置了包完备标志,使路由表能够对于数据交换过程中的接收进程和转发进程都做出标识,由此扩展了路由表的功能;当接收端由不在线变为在线时,可以根据XML格式的路由表继续向该接收端转发数据,由此实现了断点续传的功能。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。