首页 > 解决方案 > 是否可以桥接两个 WebSphere MQ 消息传递总线?

问题描述

我对 WebSphere MQ 完全陌生,但是我使用 NServiceBus 作为消息传递系统。

我面临的情况是我有两个系统,都使用它们自己的 WebSphere MQ,我需要其中一个系统中的端点接收和发送消息到另一个系统,反之亦然。

值得一提的是,这两个系统部署在两个独立的基础设施中,并且会有安全限制,这基本上意味着每个系统上的端点应该无法访问另一个系统中的资源。

是否有任何桥接机制可以允许在两个基础架构之间创建单一且安全的集成点,然后将消息从一侧的队列复制到另一侧?

标签: securitywebsphereintegrationibm-mqmq

解决方案


您有两个系统都使用它们自己的 WebSphere MQ 队列管理器。对于这个答案,我将它们称为 QM1 和 QM2。您将需要进行一些定义,如下所示,将它们连接在一起。

在 QM1 上创建这些:

DEFINE QLOCAL(QM2) USAGE(XMITQ) +
       DESCR('Transmission queue for messages being delivered to QM2')

DEFINE CHANNEL(TO.QM2) CHLTYPE(SDR) CONNAME('ipaddr-qm2(port-qm2)') XMITQ(QM2) +
       DESCR('Sender channel to move messages to QM2')

DEFINE CHANNEL(TO.QM1) CHLTYPE(RCVR) +
       DESCR('Receiver channel is receive messages from QM1') 

在 QM2 上创建这些:

DEFINE QLOCAL(QM1) USAGE(XMITQ) +
       DESCR('Transmission queue for messages being delivered to QM1')

DEFINE CHANNEL(TO.QM1) CHLTYPE(SDR) CONNAME('ipaddr-qm1(port-qm1)') XMITQ(QM1) +
       DESCR('Sender channel to move messages to QM1')

DEFINE CHANNEL(TO.QM2) CHLTYPE(RCVR) +
       DESCR('Receiver channel is receive messages from QM2') 

您还可以考虑创建数字证书并使用各种 SSL/TLS 设置来保护两个队列管理器之间的这些连接。

您大概有一个队列,其中放置了需要移动到另一个系统的消息?

如果您将该队列设置为 QREMOTE 而不是 QLOCAL,那么您可以将其通过上述通道汇集到另一个系统。

DEFINE QREMOTE(SEND.TO.QM2) RNAME(Q.ON.QM2) RQMNAME(QM2) XMITQ(QM2)

如果您在 QM1 上的 QLOCAL 上已经有消息需要到达 QM2(反之亦然),那么您将需要一个简单的管道应用程序来从它们当前所在的位置获取它们并将它们放入上面定义的 QREMOTE。像 QLOAD 这样的东西可以做到这一点。


推荐阅读