简体   繁体   中英

Is it possible to bridge two WebSphere MQ messaging buses?

I am completely new to WebSphere MQ, but instead I have worked with NServiceBus as messaging system.

The situation that I face is that I have two systems, both using their own WebSphere MQ, and I need the endpoints in one of those systems to receive and send messages to the other system, and vice versa.

It is worth mentioning that The two systems are deployed in two separate infrastructures, and there will be security restrictions which basically mean that the endpoints on each system should not be able to access the resources in the other system.

Is there any bridging mechanism that could allow to create a single and secured point of integration between the two infrastructures, which would then copy messages from the queues in one side to another?

You have two systems both using their own WebSphere MQ queue manager. I will call them QM1 and QM2 for this answer. You will need to make some definitions like the following to join them together.

On QM1 create these:

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') 

On QM2 create these:

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') 

You can additionally look into creating digital certificates and using the various SSL/TLS settings to secure these connections between the two queue managers.

You presumably have a queue where messages are put that need to move to the other system?

If you make that queue into a QREMOTE instead of a QLOCAL then you can funnel it down the above channels to the other system.

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

If you already have messages on a QLOCAL on QM1 that need to get to QM2 (and vice versa) then you will need a simple pipe application to get them from where they currently reside and put them to the QREMOTE defined above. Something like QLOAD could do this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM