企业服务总线的实施策略与总线集成
ESB首先是一种概念,实现的方案又很灵活,最终支持ESB的产品也很多,那么,ESB实施方案与具体技术各自适用的场合有什么特点?基于不同实施方案的ESB又是如何互联的呢?本文将对上述问题加以总结。
SIBus与Message Broker的集成
根据我们前面的讲解,无论采用哪一种ESB解决方案,ESB的各个总线之间应该是可以互联的。至少采用IBM产品所开发的ESB总线都因该能够顺利地集成在一起,这样ESB的设想才能成立。用户在SOA和ESB上的投资能得到有效的保护,这也是SOA倡导的核心思想-重用。单纯用SIBus或Message Broker构建的同类ESB总线,它们之间的交互方式我们在这里就不再讨论了,欢迎大家阅读WAS的信息中心(infocenter)找到答案,技术上的实现并不困难。比较难办的是SIBus(或WAS ESB)与WBI Message Broker如何实现互联。下面我们将就这一问题加以讨论。
在本系列文章的第二和第三部分中,我们已经分别介绍了两个实例,这里我们将在他们的基础上延伸出一个新的案例场景,实现SIBus的总线与Message Broker总线的互联。本样例首先包含一个的零部件价格查询模块,某制造企业所需要的零配件可能来自各个厂商,也有可能是自己制造的,同时,它所制造的零件也可能被它的内部用户或者外部用户来查询。由于零件的价格变化比较频繁,所以这些价格的查询需要是即时的价格。这一零件价格查询的样例已经在本系列的第二部分中以WAS6 的SIBus的方式上实现。同时,在这家企业的订单请求处理系统中,企业中的订单管理系统接收到客户的订单请求后,首先到库存管理系统中检查当前库存能否满足订单的要求,如果不能满足则需要到生产制造系统中去安排生产,最后向用户发出订单确认。在本系列的第三部分中,订单系统在WBI Message Broker上实现。我们现在设计这样一个场景,用户在查询订单价格的时候,可以直接选择,当某零件是自己制造的且库存为零的时候,向订单子系统直接发出订单请求。这是一个单向的服务调用,订单的生产状态被放到一个队列中供查询。
这样一个案例涉及两个ESB总线的互联。实质上我们要考虑的是两个ESB底层消息中间件如何进行不同格式的消息转换以及不同体系的消息目的地地址如何相互定位。
SIBus与MQ的消息集成
我们在Message Broker中实现了一个消息流,其中集成了两个生产系统暴露出的订单请求的Web服务。一个是公司内部的甲地的制造企业的生产产品的Web服务接口,而另外一个则是公司内部的乙地的制造企业的订单请求的Web服务接口。而产品的订单请求具体是到甲厂还是乙厂生产,则取决下订单时所携带的路由信息。
Message Broker的消息流处理的是MQ的队列的消息,因此SIBus与Message Broker的互联实质上只是SIBus与MQ的互联。SIBus只会与WBI Message Broker的消息流的入队列和出队列交互。SIBus将订单请求放到Message Broker的入队列中,而Message Broker会将消息处理完后放到出队列中。因此在我们这个场景中,我们需要做的就是在用户查询自己的零件的价格时,如果该零件的库存量为零,就需要通过SIBus向Message Broker部署的消息流的入队列发送一条消息。并且通过读写Message Broker处理完放入到其MQ出队列中的消息查询所下订单的状态。

图2:SIBus与MB之间连接时的业务流程
Websphere 6支持服务集成总线(SIBus)与Websphere MQ的互联,通过两者的互联,可以实现消息在SIBUS与MQ平台之间信息流的互通,而用户则无需考虑其中的消息格式的转换和寻址。
实现SIBus与MQ互联,需要做的主要工作是在SIBus和MQ中配置与对方通信的相应配置。由于SIBus与MQ是两个单独的产品,所以它们之间的通信需要在配置时使用相同的名称来达到识别的目的。
在SIBus上需要定义外部总线,消息引擎的MQ链接等。其中的消息引擎的MQ链接是关键之处,其发送方通道的配置告诉SIBus如何找到Websphere MQ的队列管理器,而接受方通道则是从MQ接受消息。
在Websphere MQ中的配置相对来说则更易理解,因为MQ中的配置其实就是与远程队列管理器的配置一样。在MQ看来,SIBus上的消息引擎似乎就是一个远程主机上的MQ队列管理器,通过在MQ上定义发送方通道和传输队列,就可以实现两者的连接。如果需要从MQ上发送一个消息到达SIBus上只需在MQ上定义一个远程队列。远程队列的作用就是将消息映射回SIBus上定义的本地队列中。
下面分别介绍在SIBus与MQ中需要做的配置,以及在配置完成后如何定义队列使的消息可以实现在SIBus和MQ之间自由发送。详细的配置步骤会在样例下载中有安装文档说明,这里只是介绍重要的概念。
- 本文关键词:

