Reputation: 15
We're trying to send messages from a standalone Queue manager on 1 server) to Uniform IBM Cluster (UCL) with a set of Queue managers (QM1, QM2 and QM3). on 3 different servers
Listener object 1415 on all 3 queue managers, listening on all 3 servers. A receiver channel matching sender channel name created on QM1T created on all the queue managers QM1, QM2 and QM3 of the cluster UCL. A local queue created to hold messages on all the queue managers QM1, QM2 and QM3 of the cluster UCL.
Sender channel with CONNAME of all the 3 hosts of queue managers and their ports. Transmission queue associated with Sender channel.
We'll need clarity on creation of QREMOTE, specifically how we could associate a QREMOTE with all the clustered Queue managers all at once ...is there a better way to do this and avoid single point of failures ? please let us know.
DEFINE QREMOTE('TEST.UCL') DEFPSIST(YES) CLUSTER('UCL') RQMNAME(???????????????) RNAME('UCL.TEST') XMITQ('QM1.TEST.XMIT')
While I can create QREMOTE definitions like below ? now we have multiple remote queues that stand alone queue-manger needs to deal with and multiple Remote queue managers it needs to deal with...there can be single point of failure.
Specifically, I'm looking for is there something that does like RQMNAME(ANY QM)
DEFINE QREMOTE('TEST.UCL3') DEFPSIST(YES) CLUSTER('UCL') RQMNAME('QM3') RNAME('UCL.TEST') XMITQ('QM1.TEST.XMIT')
DEFINE QREMOTE('TEST.UCL2') DEFPSIST(YES) CLUSTER('UCL') RQMNAME('QM2') RNAME('UCL.TEST') XMITQ('QM1.TEST.XMIT')
DEFINE QREMOTE('TEST.UCL1') DEFPSIST(YES) CLUSTER('UCL') RQMNAME('QM1') RNAME('UCL.TEST') XMITQ('QM1.TEST.XMIT')
Upvotes: 1
Views: 208
Reputation: 10642
The best option would be to create an overlapping cluster that includes all four queue mangers, cluster UCL.TEST in the overlapping cluster on QM1, QM2 and QM3 then on QM1T define a QALIAS instead of a QREMOTE, this will allow the messages to be work load balanced across the three instances.
If you can only have a SDR channel from QM1T then below is another option that will work with your current channel setup with the restriction that messages will only flow initially to one of the three based on availability in the order you specify the CONNAME, but once it gets to the initial queue manger it will round robin across all of the available clusters queue instances.
First on QM1, QM2 and QM3 define the following queue manger alias to allow all three queue managers to accept messages and allow them to resolve to clustered queues:
DEFINE QREMOTE(UCL.QMA) RNAME('') RQMNAME('') XMITQ('')
Next on QM1, QM2 and QM3 cluster the QLOCAL and set CLWLUSEQ to ANY so that messages put to the clustered queue on any queue manger will round robin over all the instances:
ALTER QLOCAL(UCL.TEST) CLUSTER(UCL) CLWLUSEQ(ANY) DEFBIND(NOTFIXED)
Next on QM1T alter the QREMOTE like this:
DEFINE QREMOTE('TEST.UCL') DEFPSIST(YES) CLUSTER('') RQMNAME(UCL.QMA') RNAME('UCL.TEST') XMITQ('QM1.TEST.XMIT')
Upvotes: 1