技术开发 频道

应用WebSphere MQ V6构建企业信息总线

    为了接收和处理来自 CP 的 MR 数据,HQ 端将会部署两个相同的 MDB 来监听队列 MR2HQ.Q。 之所以需要两个 MDB,是因为队列 MR2HQ.Q 在两个队列管理器 HQ1.QM 和 HQ2.QM 中都有定义 (为了负载均衡)。 这些 MDB 将 MR 记录从 JMS 消息中分离出来,并持久化到数据库,MDB 的示例代码如下:

 

    public void onMessage(javax.jms.Message msg) {

    ObjectMessage objMsg
= (ObjectMessage) msg;

    
try {

    DataObject mrData
= (DataObject) objMsg.getObject();

    
// store MR data to database

    synchronizeMR(mrData);

    }
catch (JMSException e) {

    
//

    }

    }

    为了指定 MDB 监听的队列,需要在 EJB Deployment Descriptor 中进行相应的配置, 具体来说就是指定在 WAS 中预先配置好的 ListenerPort,下图是使用 WID 进行配置的界面, 对于另外一个 MDB,同样需要设置 ListenerPort 为 BCP.HQ2.MR.LSR。

    分发 WL 数据到 CP

    HQ 会不定期的更新 WL 数据,同时需要将更新后的数据分发到各个 CP, MQ 提供的 Pub/Sub 消息处理模式方便的实现了此类需求。 在修改完 WL 数据后,HQ 会将最新的数据发送到本地主题 BCP.WL.Topic, 进而广播到所有 CP 的主题 BCP.WL.Topic,所有订阅了该主题的 MDB 均会收到最新的 WL 数据, 并将其更新到本地的数据库中。

    对于应用程序的开发和集成来说,WL 数据分发同 MR 数据同步的差别仅仅在于发送 / 接收消息的 Destination 不同,前者是 Queue,而后者是 Topic, 这对程序的影响微乎其微,这里就不一一列举了。 特别的是,Topic 订阅需要配置为 Durable 订阅,在之前 WAS 的配置中, 我们已经给 CP Topic 连接工厂配置了 Client ID 以应用 Durable 订阅特性, 在这里我们还需要在 EJB Deployment Descriptor 中对 MDB 作如下设置:

    即在 Activation Configuration 中增加两个配置:

    destinationType (java.jms.Topic)

    subscriptionDurability (Durable)

    小结

    在本文中,您了解了如何配置 WebSphere MQ 和 MQ Cluster 来实现 Queue 和 Topic 两种消息机制。并通过一个具体的实例了解如何将 WebSphere MQ 与 WAS 及应用集成起来。

0
相关文章