一种企业服务总线中的动态消息路由方法及装置的制作方法

文档序号:7766615阅读:265来源:国知局
专利名称:一种企业服务总线中的动态消息路由方法及装置的制作方法
技术领域
本发明涉及中间件总线技术,更具体的是一种企业服务总线(EnterpriseService Bus, ESB)中的动态消息路由方法及装置。
背景技术
企业服务总线为面向服务体系提供了基础平台,通过定义服务间的交互规则,ESB 为部署和发现服务提供了运行环境。ESB将企业服务的定义与服务的查找和调用分离,并提供能够屏蔽服务提供者和服务请求者之间的协议和消息格式差异的路由服务。链接到ESB 的服务之间不会直接彼此交互,ESB运行时环境作为一个仲裁者在服务间提供松散耦合,实现协议绑定、消息传输、消息处理等。ESB为服务提供传输绑定,定义和发现已部署的服务, 在服务间基于规则的路由和编排消息等。Java 业务集成(Java Business Integration, JBI)定义了 ESB 的重要部分服务容器。JBI详细定义了开发实现ESB系统要完成的功能要求,它主要包括三大部分规范化的消息路由、管理和组件模型。规范化的消息路由是JBI规范的核心,也是整个ESB架构的灵魂。传统的消息路由机制依赖于存储于消息头部的指定目标地址或相关路径信息,而消息的内容对于消息总线是不可见的。基于内容的路由则向消息转发机制暴露了消息的内容,并以此来影响消息的寻址和路由。这样发布消息时无需指定任何消息目的地信息,消息的目的地信息是由对消息的内容感兴趣的消息消费者决定的。基于内容的消息路由能够以统一的方式实现消息的单播、多播和组播。一般ESB架构中,基于内容的路由器多采用静态路由机制,路由器了解所有应用服务的功能,预先将服务的地址信息存入路由器中,路由器根据路由表和服务目录将输出消息直接转发给正确的应用系统服务。这样的机制效率很高,但当系统服务发生变化时,如增加、删除、更新等,就必须修改所有的路由器,这给系统(尤其是经常变化的系统)的维护带来很大困难。

发明内容
本发明要解决的技术问题在于采用静态的消息转发机制导致路由器路由信息维护的巨大困难,且不能适应频繁变化的应用系统和敏捷开发的需要。为了解决上述技术问题,本发明提出了一种企业服务总线中的动态消息路由方法,该方法包括如下步骤消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表;所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者ο优选的,在所述消息路由器接收服务提供者的注册请求之后,判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注册。
优选的,所述消息路由器动态维护的订阅表是指所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。优选的,所述动态消息路由采用内容的路由方式,自动根据消息的内容来动态确定消息的发送目的地。优选的,所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表。优选的,所述消息路由器动态生成路由表具体包括初始化步骤消息流程处理引擎分析消息流程,将消息流程写入路由表;检索步骤消息路由器根据所述订阅请求消息的内容确定所请求的服务,查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定的服务提供者;添加步骤将服务提供者URI (Uniform Resource Identifier),通用资源标志符) 添加到路由表中。更新步骤所述消息路由器根据转发消息的反馈结果确定路由信息的有效性,进行更新路由信息。更进一步地,本发明还提供了一种企业服务总线中的动态消息路由装置,该装置包括接收模块,用于消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;第一发送模块,用于消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表;第二发送模块,用于所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者。优选的,所述接收模块包括判断模块,用于在所述消息路由器接收服务提供者的
注册请求之后,判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注 ππ册。优选的,所述第一发送模块包括订阅表维护模块,用于所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。优选的,更包括路由模块,用于使所述动态消息路由采用基于内容的路由方式,并自动根据消息的内容来动态确定消息的发送目的地。优选的,更包括路由表生成模块,用于使所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表。优选的,所述路由表生成模块具体包括初始化模块用于根据消息流程处理引擎分析消息流程的结果,将消息流程写入路由表;检索模块用于使消息路由器根据所述订阅请求消息的内容确定所请求的服务, 查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定的服务提供者;添加模块用于将服务提供者URI (Uniform Resource Identifier),通用资源标志符)添加到路由表中。更新模块用于使所述消息路由器根据转发消息的反馈结果确定路由信息的有效性,进行更新路由信息。
5
本发明的有益效果是借助于基于内容的消息路由和消息发布/订阅模式实现了一种动态的消息路由方法及装置,有效地解决了静态消息路由机制在系统维护和适应应用变化的能力上的不足。本发明所提出的方法已在中和威公司的ESB产品hterESB中得到了应用。实践表明,该方法在系统服务复杂多变的应用中下,具有很高的灵活性和适应性。


图1是本发明中基于内容的动态消息路由方法原理图;图2是本发明中基于内容的动态消息路由方法流程图;图3是本发明的动态消息路由机制在企业服务总线中的实现;图4本发明中的基于内容的消息路由器的工作原理图;图5是本发明中的消息路由器动态生成路由表的流程图;图6是本发明中的企业服务总线中的动态消息路由装置原理图;图7是本发明中的路由表生成模块的原理图。
具体实施例方式下面结合附图介绍本发明的企业服务总线中的动态消息路由方法及装置图1描述了动态消息路由方法的基本原理,其中,路由器是动态消息路由的执行组件,路由表和订阅表为消息路由提供动态数据支持,消息订阅者将其服务功能发布到订阅表,并根据服务的演化随时更新订阅表。其中所述动态路由器中优选UDDI作为注册机制,UDDI是一个分布式的互联网服务注册机制,集描述(Universal Description)、检索 (Discovery)与集成Gntegration)为一体,包含了服务描述与发现的标准规范,属于现有技术,故本文不再赘述。图中的消息代理是消息中间件的运行实体,是消息“订阅/发布”等消息通信模型的具体实现,是消息传递的中介,负责消息的接收和分发,以及在多个消息代理组成的网络间实现消息的转发传输,属于现有技术。本文实施例中采用了中和威公司的消息中间件产品hterMQ作为消息订阅/发布机制的平台,但不局限于此。任何实现了订阅/发布模型的消息中间件产品均可以适用。图2描述了动态消息路由方法的工作流程,步骤SlOl中,消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器,步骤S102中, 消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表,步骤S103中,所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者。通过上述步骤的执行,可以完成基于内容的消息“订阅/发布”,其中,消息“订阅 /发布”机制包含一组服务提供者和一组服务使用者,服务提供者向消息代理订阅它们的感兴趣的主题,即它们所能提供的服务,当服务使用者产生服务请求消息与之匹配时,对应的服务提供者会得到该消息。基于内容的消息“订阅/发布”中,消息路由和转发机制根据消息的内容来决定消息的寻址和路由。消息的发送者在消息中可以不指定消息的目的地信息,消息的最后目的地是由对消息内容感兴趣的订阅者来决定的。更进一步的,在步骤SlOl中的所述消息路由器接收服务提供者的注册请求之后, 判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注册。
更进一步的,在步骤S102中,所述消息路由器动态维护的订阅表是指所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。上述订阅表是指服务提供者将自己所能提供的所有功能发布到订阅表。订阅表维护着服务提供者地址与服务功能之间目录索引。路由器根据消息内容或者消息所对应的服务功能信息,然后再通过订阅表获得该服务对应的服务提供者的地址信息。具体的实现中, 消息路由器可以根据服务组件发布的UDDI信息生成服务功能列表。运行时,路由器根据消息的内容查询订阅表,确定服务的提供者。更进一步的,所述动态消息路由采用内容的路由方式,自动根据消息的内容来动态确定消息的发送目的地。更进一步的,所述步骤S103之后,包括所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表,其中,路由表是由消息路由器维护的一张动态变化的路由表,存放服务功能与服务提供者的动态映射。图3描述了动态消息路由机制在企业服务总线中的实现,具体是在hterESB平台上实现。其中,路由器实现为一个服务引擎构件,订阅表的维护通过基于UDDI的服务注册管理机制实现。消息的“发布/订阅”通过hterMQ消息服务实现。图4描述了基于内容的动态消息路由器的工作原理,如下服务注册新的服务提供者通过服务注册管理机制将其功能注册到UDDI,同时根据服务的描述信息生成对应的订阅表项,并添加到订阅表。删除服务被删除的服务提供者通过服务注册管理机制将其功能注册到UDDI的服务注销;删除订阅表中对应的功能表项;删除路由表中指向该服务的路由信息。服务更新发生变化的服务提供者将其新的功能描述信息更新到UDDI ;删除订阅表中与已删除功能对应的表项;添加与新增功能对应的订阅表项;清空路由表。消息路由路由器根据消息内容确定消息所对应的服务功能;检索路由表,确定服务提供者URI ;如果没有找到对应的服务,则检索订阅表,确定对应的服务提供者;将服务提供者URI添加到路由表中。更进一步的,如图5所示,所述消息路由器动态生成路由表具体包括初始化步骤S201 消息流程处理引擎分析消息流程,将消息流程写入路由表;检索步骤S202 消息路由器根据所述订阅请求消息的内容确定所请求的服务,查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定的服务提供者;添加步骤S203 将服务提供者URI (Uniform Resource Identifier,通用资源标志符)添加到路由表中。更新步骤S204 所述消息路由器根据转发消息的反馈结果确定路由信息的有效性,进行更新路由信息。图6描述了与本发明的动态消息路由方法相对应的动态消息路由装置1,其包括, 接收模块2,用于消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;第一发送模块3,用于消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表;第二发送模块4,用于所述消息服务器基于路由表和所述订
7阅表将所述服务发送给所述消息订阅者。更进一步的,所述接收模块2包括判断模块,用于在所述消息路由器接收服务提供者的注册请求之后,判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注册。更进一步的,所述第一发送模块3包括订阅表维护模块,用于所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。更进一步的,更包括路由模块,用于使所述动态消息路由器采用内容的路由方式, 并自动根据消息的内容来动态确定消息的发送目的地。更进一步的,更包括路由表生成模块,用于使所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表。更进一步的,如图7所示的所述路由表生成模块具体包括初始化模块5 用于根据消息流程处理引擎分析消息流程的结果,将消息流程写入路由表;检索模块6 用于使消息路由器根据所述订阅请求消息的内容确定所请求的服务,查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定的服务提供者;添加模块7 用于将服务提供者URI (Uniform Resource Identifier,通用资源标志符)添加到路由表中。更新模块8 用于使所述消息路由器根据转发消息的反馈结果确定路由信息的有效性,进行更新路由信息。本发明所述的动态消息路由方法及动态消息路由装置可以通过任何编程语言实现,如JAVA、C#等等,也可以通过硬件语言实现相应的功能的集成电路,上述各模块也可以分布式的运行在不同的主机上。通过本发明的动态的消息路由方法及装置,有效地解决了静态消息路由机制在系统维护和适应应用变化的能力上的不足,大大减轻了用户及开发人员的劳动强度,使得应用系统更加易于维护。本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
权利要求
1.一种企业服务总线中的动态消息路由方法,其特征在于,该方法包括如下步骤消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表; 所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者。
2.根据权利要求1所述的方法,其特征在于在所述消息路由器接收服务提供者的注册请求之后,判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注 ππ册。
3.根据权利要求1所述的方法,其特征在于所述消息路由器动态维护的订阅表是指所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。
4.根据权利要求1所述的方法,其特征在于所述动态消息路由采用内容的路由方式, 自动根据消息的内容来动态确定消息的发送目的地。
5.根据权利要求1所述的方法,其特征在于所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表;所述消息路由器动态生成路由表包括初始化步骤消息流程处理引擎分析消息流程,将消息流程写入路由表; 检索步骤消息路由器根据所述订阅请求消息的内容确定所请求的服务,查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定服务提供者;添加步骤将服务提供者的URI添加到路由表中。更新步骤所述消息路由器根据转发消息的反馈结果确定路由信息的有效性,进行更新路由信息。
6.一种企业服务总线中的动态消息路由装置,其特征在于,该装置包括接收模块,用于消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;第一发送模块,用于消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表;第二发送模块,用于所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者。
7.根据权利要求7所述的装置,其特征在于所述接收模块包括判断模块,用于在所述消息路由器接收服务提供者的注册请求之后,判断所述注册请求是否合法,如果是则执行所述注册,如果否则拒绝所述注册。
8.根据权利要求7所述的装置,其特征在于所述第一发送模块包括订阅表维护模块, 用于所述消息路由器基于来自所述注册请求中的服务信息和注册机制的即时通知自动生成和更新所述订阅表。
9.根据权利要求7所述的装置,其特征在于更包括路由模块,用于使所述动态消息路由采用基于内容的路由方式,并自动根据消息的内容来动态确定消息的发送目的地。
10.根据权利要求7所述的装置,其特征在于更包括路由表生成模块,用于使所述消息路由器动态生成路由表,并根据转发消息的反馈信息动态更新路由表; 所述路由表生成模块包括初始化模块用于根据消息流程处理引擎分析消息流程的结果,将消息流程写入路由表;检索模块用于使消息路由器根据所述订阅请求消息的内容确定所请求的服务,查询所述路由表选出所请求的服务,如果没有找到所请求的服务,则通过所述订阅表确定服务提供者;添加模块用于将服务提供者的URI添加到路由表中。更新模块用于使所述消息路由器根据转发消息的反馈结果确定路由信息的有效性, 进行更新路由信息。
全文摘要
本发明提出了一种企业服务总线中的动态消息路由方法及装置,所述方法包括如下步骤消息路由器接收服务提供者的注册请求,将所述服务提供者所提供的服务注册到所述消息路由器;消息订阅者将订阅请求信息发送至所述消息路由器动态维护的订阅表;所述消息服务器基于路由表和所述订阅表将所述服务发送给所述消息订阅者,通过本发明的动态的消息路由方法及装置,有效地解决了静态消息路由机制在系统维护和适应应用变化的能力上的不足,大大减轻了用户及开发人员的劳动强度,使得应用系统更加易于维护。
文档编号H04L29/06GK102480417SQ201010562868
公开日2012年5月30日 申请日期2010年11月29日 优先权日2010年11月29日
发明者王志伟, 黄军昌 申请人:北京中和威软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1