企业服务总线的实施策略与总线集成
ESB首先是一种概念,实现的方案又很灵活,最终支持ESB的产品也很多,那么,ESB实施方案与具体技术各自适用的场合有什么特点?基于不同实施方案的ESB又是如何互联的呢?本文将对上述问题加以总结。
从MQ向SIBus发送消息
Message Broker处理结束的订单状态的消息到达MQ出队列后,我们需要将它发送到SIBus上。为了完成这个任务,需要分别在SIBus上定义队列目标和在MQ上定义远程队列。SIBus上的队列目标的创建与外部目标的创建过程类似,只是目标类型必须选择"队列"而不是"外部"。SIBus上的队列(例中为LocalQueue)创建成功后,我们就可以在MQ的队列管理器(例中为WBRK_QM)定义一个远程队列映射到SIBus上的队列目标LocalQueue。为了与Message Broker消息流的处理集成起来,这里在MQ中定义的远程队列也必须同时是在Message Broker中的消息流的出队列。
1)在WebSphere MQ队列管理器中选择 WBRK_QM队列管理器,扩展Queue,右键选择New=>Remote Queue Definition
2)输入或设置以下值
- Queue Name: ForeignQueue
- Remote Queue Name: LocalQueue(必须是SIBus上的同名的本地队列)
- Remote Queue Manager Name: QM_TheBus(必须是创建MQ链接时设置的队列管理器的名称)
- Transmission Queue Name: QM_TheBus(传输队列的名称)

图7:在MQ中定义映射到SIBus中的队列目标的远程队列
Message Broker中的消息转换
前面讲述的是如何在两个不同的策略实现的ESB上做寻址,但是当消息到达Message Broker实现的总线时,为了能够调用Message Broker的消息流中集成的制造厂的订单请求Web服务接口,我们需要对消息的格式进行转换。
Message Broker中对于消息的处理有很好的语言支持,也就是ESQL,通过它我们可以很方便的根据MQ的消息体中的内容,构造新的SOAP消息。在Web服务返回后,我们需要根据返回的SOAP消息体构建新的MQ消息。
消息的转换的处理流程如下图所示。上方的消息流程是完成路由到甲或乙制造厂的功能。最下方的消息流是订单请求路由到乙制造厂的处理流程。BJMQ2Http计算节点完成MQ的消息到HttpRequest1集成的乙制造厂的Web服务的SOAP请求消息的转换,而BJhttp2mq则完成的是对SOAP返回消息到MQ消息的转换。
图8:MB中的订单总线完整的消息流
- 本文关键词:


