Reputation: 11
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?
Upvotes: 1
Views: 346
Reputation: 7525
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.
Upvotes: 2
Reputation: 1830
Yes, you can connect queue managers. You should check out the documentation, try distributed queuing, or MQ clusters:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.con.doc/q015510_.htm
https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.explorer.doc/e_cluster.htm
Upvotes: 0