欢迎来到天天文库
浏览记录
ID:10660909
大小:75.00 KB
页数:9页
时间:2018-07-07
《应用websphere mq v6 来构建企业信息总线的行业示例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、应用WebSphereMQV6来构建企业信息总线的行业示例 引言 IBMQ是目前应用最多的消息中间件产品,它采用了消息队列(MessageQueue)这种应用程序间的通信方法,让不同的应用程序通过读写和检索出入队列中的数据(消息)来通信,而无需直接面对网络易变、系统异构、数据协同等各种问题和风险。Q同时也支持简单的Publish/Subscribe(发布/订阅)消息传递机制,每个队列管理器中有唯一的Broker代理来处理所有的订阅和发布。 Q支持Cluster(簇或集群),即多个队列管理器(QueueManager以下简称QM)的集合,这些队列管理器可以分布在不同
2、的机器上。本文中的例子采用了上述的Queue和Pub/Sub两种方式,并创建了一个MQCluster来简化数据传输的配置和MQ对象的管理,采用MQCluster的理由基于其如下特点: 1)Cluster中的队列管理器之间的数据传输通道是自动建立的,使得数据传输配置变得更简单; 2)队列管理器中的队列可以被指定为Cluster共享队列,对Cluster中的所有的队列管理器都是可见的;不同队列管理器中定义的同名Cluster共享队列自动实现针对该队列的传输负载均衡; 3)不同队列管理器的Broker代理之间可以指定主从关系,这样就可以在Cluster内很方便地实现树状
3、的Pub/Sub结构。 在根据需要配置好Q之后,就可以在Q,以及oveRecord,以下简称MR),这些清关数据需要被传送到HQ上汇总;各个CP在处理清关操作的时候需要的监控列表(Q来实现,HQ和每个CP都有自己的队列管理器(QM),这些QM被配置为同处于一个MQCluster中。MR的数据传输是CP到HQ单向点到点的数据传输,在本例中用定义在HQ端的队列管理器中的Cluster共享队列(MR2HQ.Q)来实现。Q自带的Broker服务用于支持简单的Pub/Sub功能,每个队列管理器中有唯一的Broker代理来处理所有主题的订阅和发布。在单一队列管理器上启用Broke
4、r代理时,主题的发布者和订阅者都直接访问这同一个队列管理器,在其上可以定义多个主题。多个队列管理器之间也可以做父子级联,前提是要建立双向的发送/接收通道以及相应的传输队列,当然如果两个队列管理器都在同一个MQCluster里也行。父子级联的效果就是子节点成为订阅代理,订阅者向子节点发出的订阅都会代理成向父节点的订阅。由此形成了一个发布/订阅的分布式树形结构,在父节点上发布的主题消息可以被其所有子节点上的订阅者消费。这种方式的好处就是可以消除对单一Broker服务的依赖,本文的例子就是采用这一方式,HQ1为父节点,所有的CP都是子节点。 图1.3MQPub/Sub示意图
5、 Q自带的Broker服务只支持简单的Pub/Sub功能,不支持集群功能。比如本文的例子,只有HQ1为父节点,不能把HQ1和HQ2的Broker服务配置成一个集群父节点;子节点只能指定一个父节点,而且也不能把多个子节点配置成一个集群子节点。在复杂的应用环境下,Q自带的Broker服务不能满足要求时,就只能采用功能更全面的essageBroker了。 ControlPoint 为了简化说明,我们在这里只描述HQ和一个单一的CP之间的情况。首先看CP端(见图1.2)。我们假设这个CP的名字就叫CP1,它配置了一个队列管理器CP1.QM,这个队列管理器与HQ端的队列管理
6、器同在一个Cluster中(BCP_CLUSTER)。由于定义在HQ端的Cluster共享队列MR2HQ.Q对CP1.QM是可见的,这样CP1就可以直接向本地队列管理器CP1.QM中的MR2HQ.Q队列发送MR数据,这些数据也将会被自动地传送到HQ端。注意:CP1本地的队列管理器并没有定义该MR2HQ.Q队列。 由于本地的Broker服务已经被配置为HQBroker服务的子节点,这样CP1对本地Broker服务某一主题的订阅(Subscribe)将被本地Broker服务代理成向HQ的Broker服务的订阅。当HQ向其Broker服务发布该主题的消息时,该消息将被CP1
7、本地的Broker服务代理消费,进而可以被CP1消费。这个消费的具体实现就是在CP1端用一个MDB(MessageDrivenBean)侦听(即订阅)本地Broker服务上的指定主题(本例中为BCP.QCluster一般都至少需要两个FullRepository,为了简化,在本文的实例中把HQ的两个队列管理器(HQ1.QM和HQ2.QM)都设置为FullRepository。Cluster共享队列MR2HQ.Q在两个队列管理器上都有定义,Broker服务则只在HQ1.QM上启动。 HQ上对每个队列管理器都需要一个MDB来处理发送到该队列
此文档下载收益归作者所有