一种分布式企业服务总线消息交换方法

文档序号:7662109阅读:166来源:国知局
专利名称:一种分布式企业服务总线消息交换方法
技术领域
本发明涉及消息交换方法,主要是一种分布式企业服务总线消息交换方法。

背景技术
“企业服务总线”作为应用系统的连接中枢,是构筑SOA(Service Oriented Architecture,面向服务架构)为基础的企业信息系统的必要元素。企业服务总线的定义可以简单的理解为由中间件技术实现并支持SOA的一组基础架构,支持异构环境中的服务、消息以及基于事件的交互,并且具有适当的服务级别和可管理性。通过企业服务总线实现应用系统的快速接入,并通过更高级的事件、流程处理能力,能够很好的将企业信息系统与实际业务协调起来,在保证原有投资的条件下,实现更加灵活和敏捷的企业信息系统改造。
在分布式的企业服务总线中,服务的提供者和消费者可以以组件的形式部署到装有企业服务总线容器(以下简称容器)的任意一个网络节点上,并通过消息的形式实现交互。而消息必须被封装成规范的消息交换形式后,经过容器的路由功能,才能完成在消费者和提供者之间传递。
消息交换作为企业服务总线的核心功能,为部署到企业服务总线上的服务提供可靠的交互机制。传统的消息交换方法一般采用远程过程调用(RPC)技术,降低系统开发的复杂度,但该技术只支持同步调用,且消息交换双方的调用接口是紧耦合的。目前比较流行的消息交换方法是采用面向消息中间件(MOM),其可以支持消息的同步/异步传递和事件驱动的体系架构,同时提供消息持久化的功能。
消息交换的性能是决定分布式企业服务总线的性能主要因素之一,而单纯的采用面向消息中间件技术对整个系统的性能有较大的影响。当消息交换的双方都处于分布式环境中的同一节点时,通过面向消息中间件(如JMS)传递消息性能损失较大,这正是本发明所要解决的问题。


发明内容
本发明要解决上述技术所存在的缺陷,提供一种高效的、可靠的、支持同步/异步的分布式企业服务总线消息交换方法。
本发明解决其技术问题所采用的技术方案这种分布式企业服务总线消息交换方法,步骤如下 (1)、部署到企业服务总线上的组件之间必须以消息的方式进行交换,且该消息必须按照一定的格式进行构造,组件在发送消息时设置同步或异步发送、消息的交换模式和是否需要持久化,系统为每个服务提供一个用于接收消息的队列; (2)、当服务消费者发送服务请求之后,其所在的容器必须根据消息中设定的地址信息对消息进行路由,确定服务提供者; (3)、根据服务提供者所处的容器,采用不同的消息交换方法,服务消费者和提供者之间的消息交换可分成两种情况 参与消息交换的两个组件位于分布式环境中的同一节点时,即位于同一容器时,消息不需要通过JMS服务器,而是直接被保存到目标服务对应的消息队列中;若该消息需要持久化,则将其保存到文件系统中,通过这种优化策略,可以显著的提高消息交换的效率。
参与消息交换的两个服务位于分布式环境中的不同节点时,即位于不同容器时,消息被封装成JMS的消息对象,并通过JMS服务器发送到以目标服务名称命名的JMS队列中,当JMS的消息消费者在接收到消息后,会将消息保存到目标服务的消息队列中。该过程中的消息持久化是由JMS服务器实现的。
本发明有益的效果是 ■支持同步/异步的消息发送方式; ■提供消息持久化的功能; ■当消息交换的双方位于同一容器时,采用优化策略,提高消息交换效率。



图1规范化消息交换结构图; 图2同一容器中的消息交换图; 图3不同容器间的消息交换图。

具体实施例方式 下面结合附图和实施例对本发明作进一步介绍 图1描述了规范化消息交换中包括的内容。
1)服务消费者在发送消息前,必须将规范化的消息放到消息交换中,然后设定服务提供者的地址(可以是服务端点、服务名称或接口名称),以及在属性中设定采用的传递方式(同步或异步)。
2)在服务消费者将消息发出后,其所在的容器将对消息进行路由。如果服务消费者指定的地址信息为服务名称或接口名称,则消息路由服务将查找对应的服务端点,并将该端点信息保存到服务端点中。接着,将服务端点对应的组件名称设为服务提供者ID,将服务消费者的名称设为服务消费者ID。其中组件命名方式是由组件所在的容器名和用户定义的组件名串连而成。
图2描述了服务消费者和提供者在同一个容器中时的消息交换方式 1)在服务消费者构造好规范化的消息交换后,可以通过对应的消息传输通道将消息发送出去。
2)服务消费者所在的容器发现有消息发出后,首先判断消息发送的方式是同步还是异步若是异步发送,则新启动一个线程,否则继续执行。接着,调用消息交换模块的消息路由服务功能。在消息路由过程中,容器根据服务信息注册表中的相关信息,确定目标端点和服务提供者。
3)在确定服务提供者后,比较服务提供者ID中组件所在的容器名和服务消费者所在的容器名是否相同。若相同,则在本地容器中查找服务提供者,并将消息交换直接保存到其对应的消息传输通道中的消息队列中,同时将消息持久化。
4)服务提供者在处理消息之后,可以将返回信息放到原有的消息交换中,并直接发出。
5)容器在接收到返回消息后,可以根据消息交换中的服务消费者ID,在本地查找服务消费者,并将消息返回到服务消费者对应的消息传输通道的消息队列中。
图3描述了服务消费者和提供者在不同容器中时的消息交换方式 1)在组件启动之前,容器都将用其名字为其创建一个JMS的消息队列,并将该队列保存到JMS消息代理中。
2)组件在发送消息后,服务消费者所在的容器经过上述的路由过程,确定服务提供者位于其它容器上。此时,消息路由服务通过JMS消息代理,将规范化消息封装成JMS的消息对象。然后以服务提供者ID作为目标地址,通过JMS服务器(JTangMQ)将消息发送出去。
3)服务提供者对应的JMS消息队列在接收到消息后,将消息还原成规范化的消息,并将其保存到服务提供者对应的消息传输通道中的消息队列中。
4)服务提供者在处理消息之后,可以将返回信息放到原有的消息交换中,并直接发出。
5)容器在接收到返回消息后,将消息交给JMS消息代理。JMS消息代理根据服务消费者ID,以相同的机制,通过JMS服务器,将消息返回到服务消费者对应的JMS消息队列中。
6)最后,服务消费者对应的JMS消息队列在接收到消息时,将消息返回到服务消费者对应的消息传输通道中的消息队列中。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
权利要求
1.一种分布式企业服务总线消息交换方法,其特征在于步骤如下
(1)、部署到企业服务总线上的组件之间必须以消息的方式进行交换,系统为每个服务提供一个用于接收消息的队列;
(2)、当服务消费者发送服务请求之后,其所在的容器必须根据消息中设定的地址信息对消息进行路由,确定服务提供者;
(3)、根据服务提供者所处的容器,采用不同的消息交换方法,服务消费者和提供者之间的消息交换可分成两种情况
参与消息交换的两个组件位于分布式环境中的同一节点时,即位于同一容器时,消息不需要通过JMS服务器,而是直接被保存到目标服务对应的消息队列中;
参与消息交换的两个服务位于分布式环境中的不同节点时,即位于不同容器时,消息被封装成JMS的消息对象,并通过JMS服务器发送到以目标服务名称命名的JMS队列中,当JMS的消息消费者在接收到消息后,会将消息保存到目标服务的消息队列中。
2.根据权利要求1所述的分布式企业服务总线消息交换方法,其特征在于组件在发送消息时设置同步或异步发送、消息的交换模式和是否需要持久化。
3.根据权利要求1或2所述的分布式企业服务总线消息交换方法,其特征在于参与消息交换的两个组件位于分布式环境中的同一节点时,即位于同一容器时,若该消息需要持久化,则将其保存到文件系统中。
4.根据权利要求1所述的分布式企业服务总线消息交换方法,其特征在于服务消费者和提供者在同一个容器中时的消息交换方式具体步骤如下
1)在服务消费者构造好规范化的消息交换后,通过对应的消息传输通道将消息发送出去;
2)服务消费者所在的容器发现有消息发出后,首先判断消息发送的方式是同步还是异步若是异步发送,则新启动一个线程,否则继续执行;接着,调用消息交换模块的消息路由服务功能,在消息路由过程中,容器根据服务信息注册表中的相关信息,确定目标端点和服务提供者;
3)在确定服务提供者后,比较服务提供者ID中组件所在的容器名和服务消费者所在的容器名是否相同;若相同,则在本地容器中查找服务提供者,并将消息交换直接保存到其对应的消息传输通道中的消息队列中,同时将消息持久化;
4)服务提供者在处理消息之后,将返回信息放到原有的消息交换中,并直接发出;
5)容器在接收到返回消息后,可以根据消息交换中的服务消费者ID,在本地查找服务消费者,并将消息返回到服务消费者对应的消息传输通道的消息队列中。
5.根据权利要求1所述的分布式企业服务总线消息交换方法,其特征在于服务消费者和提供者在不同容器中时的消息交换方式具体步骤如下
1)在组件启动之前,容器都将用其名字为其创建一个JMS的消息队列,并将该队列保存到JMS消息代理中;
2)组件在发送消息后,服务消费者所在的容器经过上述的路由过程,确定服务提供者位于其它容器上,此时,消息路由服务通过JMS消息代理,将规范化消息封装成JMS的消息对象,然后以服务提供者ID作为目标地址,通过JMS服务器将消息发送出去;
3)服务提供者对应的JMS消息队列在接收到消息后,将消息还原成规范化的消息,并将其保存到服务提供者对应的消息传输通道中的消息队列中;
4)服务提供者在处理消息之后,将返回信息放到原有的消息交换中,并直接发出;
5)容器在接收到返回消息后,将消息交给JMS消息代理,JMS消息代理根据服务消费者ID,以相同的机制,通过JMS服务器,将消息返回到服务消费者对应的JMS消息队列中;
6)最后,服务消费者对应的JMS消息队列在接收到消息时,将消息返回到服务消费者对应的消息传输通道中的消息队列中。
6.根据权利要求1所述的分布式企业服务总线消息交换方法,其特征在于规范化消息交换中包括的内容
1)服务消费者在发送消息前,将规范化的消息放到消息交换中,然后设定服务提供者的地址,以及在属性中设定采用的传递方式,即同步或异步;
2)在服务消费者将消息发出后,其所在的容器将对消息进行路由;如果服务消费者指定的地址信息为服务名称或接口名称,则消息路由服务将查找对应的服务端点,并将该端点信息保存到服务端点中;接着,将服务端点对应的组件名称设为服务提供者ID,将服务消费者的名称设为服务消费者ID,其中组件命名方式是由组件所在的容器名和用户定义的组件名串连而成。
全文摘要
本发明涉及一种分布式企业服务总线消息交换方法,步骤如下(1)部署到企业服务总线上的组件之间必须以消息的方式进行交换,且该消息必须按照一定的格式进行构造,组件在发送消息时设置同步或异步发送、消息的交换模式和是否需要持久化,系统为每个服务提供一个用于接收消息的队列;(2)当服务消费者发送服务请求之后,其所在的容器必须根据消息中设定的地址信息对消息进行路由,确定服务提供者;(3)根据服务提供者所处的容器,采用不同的消息交换方法。本发明有益的效果是支持同步/异步的消息发送方式;提供消息持久化的功能;当消息交换的双方位于同一容器时,采用优化策略,提高消息交换效率。
文档编号H04L12/58GK101184056SQ20071015670
公开日2008年5月21日 申请日期2007年12月4日 优先权日2007年12月4日
发明者尹建伟, 陈韩伟, 路 金, 健 吴, 邓水光, 莹 李, 吴朝晖 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1