ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » Remote messaging problem

Post new topic  Reply to topic
 Remote messaging problem « View previous topic :: View next topic » 
Author Message
ktg
PostPosted: Wed Mar 01, 2006 4:17 am    Post subject: Remote messaging problem Reply with quote

Centurion

Joined: 09 Jan 2006
Posts: 138
Location: India

I have 3 qmgrs with the following objects.

Code:
Queue Manager A, dead letter queue DLQ:
QLOCAL(B) USAGE(XMITQ)
QLOCAL(APPQ)
QLOCAL(DLQ)
CHANNEL(A.B) CHLTYPE(SDR) XMITQ(B) CONNAME(B)
QREMOTE(C) XMITQ(B) RQMNAME(C)
QREMOTE(D) XMITQ(B) RQMNAME(D)
QREMOTE(F) RQMNAME(D) RNAME(APPQ) XMITQ(B)
QALIAS(E) TARGQ(F)


Code:
Queue Manager B, dead letter queue DLQ:
QLOCAL(C) USAGE(XMITQ)
QLOCAL(APPQ)
QLOCAL(DLQ)
CHANNEL(A.B) CHLTYPE(RCVR)
CHANNEL(B.C) CHLTYPE(SDR) XMITQ(C) CONNAME(C)
QREMOTE(D) XMITQ(C)


Code:
Queue Manager C, dead letter queue DLQ:
QLOCAL(APPQ)
QLOCAL(DLQ)
CHANNEL(B.C) CHLTYPE(RCVR)
QREMOTE(D) RQMNAME(C)


(all the channels are running)
I wanted the messages which are put on queue E of A should reach APPLQ of C. But, I found out that the messages were going on APPLQ of B.

I then, solved the problem by doing
Code:
 echo alter qr(D) rqmname(c) | runmqsc B

and now it is working as expected.

My doubt is why the messages were placing on APPQ of B(before altering qr(D)). As per my knowledge it should have gone to DLQ of B.

I read queue name resolution topic in APG and Intercommunication.
But, I could not find the reason( or I may not have understood)

Could anyone please help me...

thanks
Back to top
View user's profile Send private message AIM Address
Mr Butcher
PostPosted: Wed Mar 01, 2006 6:03 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

why dlq? i think you overlooked one of the naming resolution rules in the apg....

the message put at queuemanager A hits queuemanager B with

TARGETQUEUE(APPQ) TARGETQUEUEMANAGER(D)

Now Queuemanager B is looking for something named "D" to route the message to, and the remotequeue "D" is found which is a queue manager alias because there is no remote queue name in there (the definition of the queue is QREMOTE(D) XMITQ(C)).
Now - according to the naming resolution written in the APG, the row " Queue manager alias definition (RemoteQMgrName may be the local queue manager)" is what you need (sorry, can not cut/paste in a readable format out of pdf). For Objectqueuemanager, the row reads:
Perform name resolution again with ObjectQMgrName set to RemoteQMgrName.

In your case you left the RemoteQmgrName blank in the queue manager alia, which means "local" Queuemanager when the naming resolution is performed again, so Queuemanager B puts the message to its own APPQ queue.

After your change, the naming resolution was performed again, but now the remote queuemanager in the queuemanager alias is "C" istead of blank, so now queuemanager B looks for something that is named "C" and finds the xmitq "C" and puts the message to that xmitq. now the message arrives in qmgr c and is put to queue APPQ.
_________________
Regards, Butcher
Back to top
View user's profile Send private message
ktg
PostPosted: Thu Mar 02, 2006 1:10 am    Post subject: Reply with quote

Centurion

Joined: 09 Jan 2006
Posts: 138
Location: India

thanks for reply...... but, now I am totally confused.... will do some experiment myself and revert back...

Regards,
Back to top
View user's profile Send private message AIM Address
Mr Butcher
PostPosted: Thu Mar 02, 2006 1:28 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

glad i was of help

what caused the confusion? in the first case, after all naming resolution was done, target queuemanager is "B", after the change target queuemanager is "C"
_________________
Regards, Butcher
Back to top
View user's profile Send private message
ktg
PostPosted: Mon Mar 06, 2006 5:09 am    Post subject: Reply with quote

Centurion

Joined: 09 Jan 2006
Posts: 138
Location: India

Am very sorry for the delayed reply. Now, I feel I understood the concept from the replies, pdfs, experiments and came to the below conclusion. Please, let me know if I am wrong.


For messages with rqm name as queue name(MY.QUEUE)
1.
Queue name is MY.QUEUE,
RNAME is blank,
RQMNAME is blank,
XMITQ is blank
It is qmgr alias to itself

2.
Queue name is MY.QUEUE,
RNAME is blank,
RQMNAME is blank,
XMITQ is TRANMIT.Q
It is qmgr alias to itself (Message won't be put into xmit queue)

3.
Queue name is MY.QUEUE,
RNAME is blank,
RQMNAME is REMOTE.QMGR,
XMITQ is blank,
Qmgr alias to REMOTE.QMGR(Message will be put into xmit queue with the same name as REMOTE.QMGR. If there is no such xmit queue, message will be put into default xmit q. If default xmit q is not present, msg will be put into DLQ

4.
Queue name is MY.QUEUE,
RNAME is blank,
RQMNAME is REMOTE.QMGR,
XMITQ is TRANMIT.Q,
Qmgr alias to REMOTE.QMGR(Message will be put into xmit queue with the name TRANMIT.Q. If no such xmit queue is present, msg will be put in to dead letter queue)

5.If a message with RNAME as MY.QUEUE comes, it would be put in to DLQ

For messages with rname as QUEUE NAME(MY.QUEUE)
1.
Queue name is MY.QUEUE,
RNAME is REMOTE.QUEUE,
RQMNAME is blank,
XMITQ is blank
It would be put into dead letter queue

2.
Queue name is MY.QUEUE,
RNAME is REMOTE.QUEUE,
RQMNAME is blank,
XMITQ is TRANMIT.Q
It would be put into dead letter queue

3.
Queue name is MY.QUEUE
RNAME is REMOTE.QUEUE
RQMNAME is REMOTE.QMGR
XMITQ is (blank)
Message will be put in to xmit queue with the same name as REMOTE.QMGR. If there is no such xmit queue, message will be put into default xmit q. If default xmit q is not present, msg will be put into DLQ

4.
Queue name is MY.QUEUE
RNAME is REMOTE.QUEUE
RQMNAME is REMOTE.QMGR
XMITQ is TRANMIT.Q
Message will be put in to xmit queue with the name TRANMIT.Q If there is no such xmit queue, message will be put into DLQ

5.
If a message with RQMNAME as MY.QUEUE comes, it would be put in to DLQ


thanks,
Back to top
View user's profile Send private message AIM Address
Mr Butcher
PostPosted: Mon Mar 06, 2006 5:18 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

sorry, too much to read for me now. why do you do that`? why do you write down what is already written in the manual? i will not verify if you copied the manuals correct.... thats waste of time. sorry.
_________________
Regards, Butcher
Back to top
View user's profile Send private message
ktg
PostPosted: Mon Mar 06, 2006 5:33 am    Post subject: Reply with quote

Centurion

Joined: 09 Jan 2006
Posts: 138
Location: India

Butcher,

I didn't copy it from manuals. I read the docs...but felt that is difficult to understand and then with your reply, I managed to get some idea about it. And from that understanding I wrote all those.... so, Please, verify it only when you get time. I know, with just copy-pasting I won't achive any thing. One of my collegue was also finding it difficult to understand name resolution from the docs and she felt it is easier to understand from my tables. So, I posted it. but, am not sure whether my understanding is correct. (don't get angry with this long reply )

thanks
Back to top
View user's profile Send private message AIM Address
HubertKleinmanns
PostPosted: Mon Mar 06, 2006 11:57 pm    Post subject: Reply with quote

Shaman

Joined: 24 Feb 2004
Posts: 732
Location: Germany

Alpan,

when you leave the attribute RNAME blank, you have a QMgr alias. This means, you should write:

Quote:
Queue name is MY.QUEUEMANAGER


in your sample, you wrote for QMgr B:

Quote:
QREMOTE(D) XMITQ(C)


This means, you left the attribute RQMNAME blank. Then MQ resolves this blank name first to the local QMgr before it puts the message to the XmitQ. After this resolving, MQ detects, that the message is addressed (know) to the local QMgr. Then MQ resolves to a local target queue and again does not put to the XmitQ, but to the local Q in the Xmit header.

I myself read Butchers description several times, until I understood it, but his explanation is completely right.
_________________
Regards
Hubert
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » Remote messaging problem
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.