Author |
Message
|
stockician |
Posted: Tue Sep 18, 2012 8:55 am Post subject: MQ Configuration for Partner Integration |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
Hi,
I am trying to setup integration with our Partner using MQ to MQ connectivity with the message flow as below:
Partner QMgr (PQ) <->My Front-end QMgr (FEQ) <-> My Back-end QMgr (BEQ)
I am trying this with a remote queue on PQ pointing to a queue that is actually defined locally on my BEQ and advertised as a cluster that FEQ and BEQ are in. I am trying this approach to ensure my connectivity to partners is only via FEQ so that 1) PQ doesn't have any visibility into the BEQ name. 2) Messages don't stay on FEQ and flow almost instantly from FEQ to BEQ.
I am having issues with getting this working because PQ is trying to send messages to BEQ and fails rightfully so because I didn't setup channels between the two. So I was wondering what I might be missing here. Any other thoughts on getting this working would be greatly appreciated.
thanks,
Kumar |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Sep 18, 2012 8:59 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
You should define a QREMOTE on PQ.
This should have an RQMNAME of FEQ, and an RQNAME that points to a QREMOTE on FEQ - let's call it MYQUEUE.
Then define a QREMOTE on FEQ named MYQUEUE. It should have an RQMNAME of '' and a RQNAME of the name of the QLOCAL on BEQ that's shared in the cluster.
Then define a QLOCAL on BEQ, and share it in the cluster. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Sep 18, 2012 9:03 am Post subject: Re: MQ Configuration for Partner Integration |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
stockician wrote: |
I am having issues with getting this working because PQ is trying to send messages to BEQ and fails rightfully so because I didn't setup channels between the two. |
It might help if you mention how it fails, in terms of reason codes. I would however suspect that it's not the channels you're missing but some aliases.
stockician wrote: |
So I was wondering what I might be missing here. Any other thoughts on getting this working would be greatly appreciated. |
Rather than thinking in terms of channels, think in terms of name resolution. You either need PQ to have some way of resolving BEQ which leads it to FEQ as a first move, and then have FEQ resolve BEQ in the cluster, or you need PQ to send the message unconditionally to FEQ addressed to BEQ & let that resolve the name.
The first method is probably easier. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
stockician |
Posted: Tue Sep 18, 2012 9:38 am Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
mqjeff,
Thank you for the response! I blanked out the RQMNAME because that seemed to be the difference between what I had configured and what you suggested. Now, the messages end up on the dead letter queue of FEQ instead of being on the BEQ. |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Sep 18, 2012 9:46 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
What's the reason code in the DLH on the message in the DLQ on FEQ?
Can you use amqsput/amqsputc to connect to FEQ and send a message to the qcluster using the name you put in the RQNAME of the QREMOTE on FEQ? |
|
Back to top |
|
 |
stockician |
Posted: Tue Sep 18, 2012 10:14 am Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
mqjeff,
I am getting an MQRC_UNKNOWN_REMOTE_Q_MGR (Reason Code=2087, Completion Code=2) when I try putting messages directly by opening the queue on FEQ. |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Sep 18, 2012 12:29 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
stockician wrote: |
mqjeff,
I am getting an MQRC_UNKNOWN_REMOTE_Q_MGR (Reason Code=2087, Completion Code=2) when I try putting messages directly by opening the queue on FEQ. |
Probably missing the cluster alias on the gateway qmgr. _________________ MQ & Broker admin |
|
Back to top |
|
 |
stockician |
Posted: Tue Sep 18, 2012 1:17 pm Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
Can you guide me on how to setup queue manager alias? I am new to the concept and any specifics would be of great help.
Thank you! |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Sep 18, 2012 4:45 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
stockician wrote: |
Can you guide me on how to setup queue manager alias? I am new to the concept and any specifics would be of great help.
Thank you! |
You should have 2 examples of it: one in the intercommunications manual and one in the cluster manual.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
stockician |
Posted: Thu Sep 20, 2012 6:47 am Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
fjb_saper,
Thank you for pointing me to the manuals on clustering and intercommunication. That helped me in finding out how to setup an alias. Unfortunately, I am still not able to get things working and messages still end up on the dead letter queue of FEQ with RC2087, MQRC_UNKNOWN_REMOTE_Q_MGR with destination queue manager attribute being DUMMY, the alias I setup.
This is how my setup looks like:
### Queue Confguration on PQ ###
QREMOTE('PARTNER.OUTBOUND') +
* QUEUE('PARTNER.OUTBOUND') +
* TYPE(QREMOTE) +
RNAME('INBOUND.QUEUE') +
RQMNAME('DUMMY') +
XMITQ('FEQ')
### Queue Confguration on FEQ ###
DEFINE QREMOTE('DUMMY') +
* QUEUE('DUMMY') +
* TYPE(QREMOTE) +
DEFINE QREMOTE('INBOUND.QUEUE') +
* QUEUE('INBOUND.QUEUE') +
* TYPE(QREMOTE) +
CLUSTER('MYCLUSTER') +
RNAME('INBOUND.QUEUE') +
XMITQ('XMITQ') + //Does this need to be my BEQ? It is not right now...
### Queue Confguration on BEQ ###
DEFINE QLOCAL('INBOUND.QUEUE') +
* QUEUE('INBOUND.QUEUE') +
* TYPE(QLOCAL) +
CLUSTER('MYCLUSTER') +
I would appreciate if you can chime in with any feedback/recommendations.
Thanks! |
|
Back to top |
|
 |
stockician |
Posted: Thu Sep 20, 2012 8:11 am Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
I was able to get my messages across by configuring PQ as below. Unfortunately, this means that my partner will have knowledge of internal queue manager name which, I would not want to expose. Besides, this doesn't take advantage of clustering that I have in place for back-end queue managers.
### Queue Confguration on PQ ###
QREMOTE('PARTNER.OUTBOUND') +
* QUEUE('PARTNER.OUTBOUND') +
* TYPE(QREMOTE) +
RNAME('INBOUND.QUEUE') +
RQMNAME(BEQ) +
XMITQ('FEQ') |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Sep 20, 2012 8:31 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
The outbound request message can specify any name in the REPLY-TO-QMGR name field of the MQMD. It need not be the real qmgr name.
If it is not the real qmgr name, then there must be a queue-manager-alias definition on the requesting qmgr to resolve the name when the reply message arrives.
A queue-manager-alias is a QRemote definition, but without an RName specified. Like this:
DEF QR(not-the-real-queue-manager-name)
RQMNAME(the-real-queue-manager-name). _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Sep 20, 2012 7:07 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Delete the definition of the "INBOUND.QUEUE" on FEQ. It is not needed and will only cloud matters. Then try again using the DUMMY alias.
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
stockician |
Posted: Fri Sep 21, 2012 12:01 pm Post subject: |
|
|
Newbie
Joined: 18 Sep 2012 Posts: 7
|
Hooray, I have been able to get this working. Found the article (link below) that very accurately depicts my setup.
[url] http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=%2Fcom.ibm.mq.csqzah.doc%2Fqc10850_.htm [/url]
Basically, the missing piece was the creation of queue manager alias on BEQ. So, my final configuration looks like the below:
### Queue Confguration on PQ ###
QREMOTE('PARTNER.OUTBOUND') +
* QUEUE('PARTNER.OUTBOUND') +
* TYPE(QREMOTE) +
RNAME('INBOUND.QUEUE') +
RQMNAME('DUMMY') +
XMITQ('FEQ')
### Queue Confguration on FEQ ###
DEFINE QREMOTE('INBOUND.QUEUE') +
* QUEUE('INBOUND.QUEUE') +
* TYPE(QREMOTE) +
CLUSTER('MYCLUSTER') +
RNAME('INBOUND.QUEUE') +
XMITQ('XMITQ') + //Does this need to be my BEQ? It is not right now...
### Queue Confguration on BEQ ###
DEFINE QREMOTE('DUMMY') +
* QUEUE('DUMMY') +
* TYPE(QREMOTE) +
DEFINE QLOCAL('INBOUND.QUEUE') +
* QUEUE('INBOUND.QUEUE') +
* TYPE(QLOCAL) +
CLUSTER('MYCLUSTER') +
I greatly appreciate your help and valuable references.
Thanks! |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Sep 21, 2012 9:49 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
It may well work but the definitions aren't right.
For one the Dummy alias should be defined on FEQ. FEQ should also have a defined alias to PQ and have it clustered, so that BEQ can dynamically find a path back to the request qmgr.
So in short:
Move the definition of the cluster alias Dummy from BEQ to FEQ
Delete the qremote inbound queue definition from FEQ.
On FEQ add
Code: |
def qr(PQ) rqmname(PQ) xmitq(TO.PQ) cluster(MYCLUSTER) |
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|