Author |
Message
|
looney |
Posted: Fri Oct 04, 2013 7:07 am Post subject: Hopping messages |
|
|
Newbie
Joined: 04 Oct 2013 Posts: 5
|
Hi all!
I've been reading this forum for a while now and I already learned a lot but I decided to register since I have a problem that I can't solve myself...
Our setup is as follows:
QM1 <-> GWQM1 <-> QM3
GWQM2 QM4
QM1: a queuemanager from an external company
GWQM1 and GWQM2: our gateways queuemanagers
QM3 and QM4: backend queuemanagers.
QM1 is clustered with GWQM1 and GWQM2 (cluster1)
GWQM1 and GWQM2 are clustered with QM3 and QM4 (cluster2)
At this moment, we have data flowing from QM1 over the gateways to QM3 and QM4. On the gateways we have a local queue hosted where the message arrive from QM1 over the cluster. A programs reads the message and puts it towards QM3 and QM4. This way we have logging if a message flows from QM1 to QM3 and QM4.
When this program fails, all messages get stuck.. We don't want this anymore and wrote channel exits to do the logging. Now I want to remove the hopping program and replace it by standard MQ hopping mechanisms.
How:
I replaced the local queue on the gateway with an alias queue that points to the queue on QM3 and QM4. For some flows this is working fine and the base queue gets resolved to the queues on QM3 and QM4 (clustering)! We receive data load balanced over the gateways and send it to QM3 and QM4 also loadbalanced.
So far so good
But, for some flows this setup doesn't work . All messages get stuck on the DLQ with the reason 2082 MQRC_UNKNOWN_ALIAS_BASE_Q.
I can see in the messages that they fill up the destination queuemanagers... The alias queue on the gateways have the defbind(notfixed) option so I think there application overrules this for some flows (I only receive data on 1 gateway). When the queuemanager is filled in in the MQMD of the messages, The basequeue is only searched local and I think this is why I get the 2082 (no cluster repo is checked, only a local search).
I found a solution that works:
I replaced the alias queues on the gateways with remote queues and filled in the rqmname with QMBACKEND and the rname with the queues on QM3 and QM4. On QM3 and QM4 I created an queuemanager alias: QMBACKEND.
I'm not happy with this solution since I don't want to make changes on my gateway every time I move the queues on the backend to another queuemanager...
Do you guys have any tips or tricks to solve this issue withtout:
1) Asking the external company to changed the defbind option on applicational level
2) Have a reference on the gateway queuemanagers to the backend queuemanagers: I think this is not flexible..
Thanks in advance! |
|
Back to top |
|
 |
rcp_mq |
Posted: Fri Oct 04, 2013 7:21 am Post subject: |
|
|
 Centurion
Joined: 13 Dec 2011 Posts: 133
|
We have a similar(not identical) setup. Do you get 2189? |
|
Back to top |
|
 |
looney |
Posted: Fri Oct 04, 2013 7:24 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2013 Posts: 5
|
Thx for your quick response!
No, the clustering resolution works fine for some flows and the messages reach the backend.
We only have problems when messages arrive on one gateway (I think because the application used the defbind on open option). Then we receive a 2082: MQRC_UNKNOWN_ALIAS_BASE_Q. .
I think this is because the qmgr only search for the targetq locally. Since it doesn't exist locally (it's a clustered queue on QM3 and QM4 (backends)) |
|
Back to top |
|
 |
exerk |
Posted: Fri Oct 04, 2013 7:42 am Post subject: Re: Hopping messages |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
looney wrote: |
...I can see in the messages that they fill up the destination queuemanagers... |
Can you clarify that please? Do you mean that the external company queue manager is using a specific queue manager name and queue name when it puts certain messages, i.e. QM3 and QM4? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
looney |
Posted: Fri Oct 04, 2013 7:47 am Post subject: Re: Hopping messages |
|
|
Newbie
Joined: 04 Oct 2013 Posts: 5
|
exerk wrote: |
looney wrote: |
...I can see in the messages that they fill up the destination queuemanagers... |
Can you clarify that please? Do you mean that the external company queue manager is using a specific queue manager name and queue name when it puts certain messages, i.e. QM3 and QM4? |
I think they use the defbind on open option and specify the queue name.
This results in messages arriving on only one gateways with queuename (AQ.HOP) and queuemanger (GWQM1) filled in.
When hopping the message, the target queue is only searched on GWQM1 I think.. => 2082 |
|
Back to top |
|
 |
McueMart |
Posted: Fri Oct 04, 2013 8:13 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
The behavior you are describing is obviously working as intended (http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqsao.doc%2Ffm12800_1.htm)
Are you able to get them to modify the sending application? |
|
Back to top |
|
 |
looney |
Posted: Fri Oct 04, 2013 8:17 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2013 Posts: 5
|
McueMart wrote: |
The behavior you are describing is obviously working as intended (http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqsao.doc%2Ffm12800_1.htm)
Are you able to get them to modify the sending application? |
Nice, so my way of thinking was correct .
No that's the problem. The application on their side isn't in house developed... The defbind option isn't configurable, I already asked them  |
|
Back to top |
|
 |
JosephGramig |
Posted: Fri Oct 04, 2013 8:59 am Post subject: |
|
|
 Grand Master
Joined: 09 Feb 2006 Posts: 1244 Location: Gold Coast of Florida, USA
|
On the queue (QL, QA or QR) DEFBIND(NOTFIXED) is most certainly configurable. It should always be NOTFIXED and if the application needed BIND ON OPEN, it should say so on the open options (because only the application knows if it needs to bind or not).
It was tragic that IBM didn't make this the default (but you can and should change the default objects to make this your default).
If they targeted your Qmgr specifically in their message, then the QmgrAlias was the answer. You are correct that it is looking for the queue locally because the QmgrName is in the MQMD.
You didn't say if the business partner was connecting to you through their Qmgr or client. In this case, sounds like Qmgr. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Oct 04, 2013 9:45 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
JosephGramig wrote: |
On the queue (QL, QA or QR) DEFBIND(NOTFIXED) is most certainly configurable. |
If the OP's application is selecting a binding option at put time through a hard coded (non-configurable) value, then it most certainly is not configurable by the OP. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
looney |
Posted: Fri Oct 04, 2013 9:55 am Post subject: |
|
|
Newbie
Joined: 04 Oct 2013 Posts: 5
|
Vitor wrote: |
JosephGramig wrote: |
On the queue (QL, QA or QR) DEFBIND(NOTFIXED) is most certainly configurable. |
If the OP's application is selecting a binding option at put time through a hard coded (non-configurable) value, then it most certainly is not configurable by the OP. |
And I think this is the case..
They are connecting through their qmgr btw..
so I think the only simple solution would be to replace the alias by a remote queue and use the backend qmgr aliasen in the rqmname.. |
|
Back to top |
|
 |
|