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 » Peculiar Problem

Post new topic  Reply to topic
 Peculiar Problem « View previous topic :: View next topic » 
Author Message
andrewhirst
PostPosted: Wed Oct 20, 2004 7:32 am    Post subject: Peculiar Problem Reply with quote

Apprentice

Joined: 06 Jul 2004
Posts: 33
Location: UK

Hi,

This one has me stumped!

We have an MQ cluster consisting of a development PC (Webspere Application Dev on Win2K), a WMQI broker (Solaris) and a gateway (Solaris). The gateway box is intended to enable a remote 3rd party box (Win2K not in the cluster) to post replies in response to requests made by the dev PC. The requests get out, via the broker, OK and the app on the 3rd party box replies, but once the messages reach the gateway box, they are sent to the DLQ on the gateway box.

The DL header reports the error as 2085, i.e. unknown object. However, by logging on to the gateway box I can post to the queue in question without problem. The queue in question is defined as an alias queue on the broker that points to a local queue also on the broker.

The remote message is posted with the user mqm. I use the same username when I post a message directly from the gateway.

Error Log
----- amqrmrca.c : 1318 -------------------------------------------------------
10/20/04 04:30:34 PM
AMQ9544: Messages not put to destination queue.

EXPLANATION:
During the processing of channel 'NVISRP01.QSXGWP01' one or more messages could
not be put to the destination queue and attempts were made to put them to a
dead-letter queue. The location of the queue is 1, where 1 is the local
dead-letter queue and 2 is the remote dead-letter queue.
ACTION:
Examine the contents of the dead-letter queue. Each message is contained in a
structure that describes why the message was put to the queue, and to where it
was originally addressed. Also look at previous error messages to see if the
attempt to put messages to a dead-letter queue failed. The program identifier
(PID) of the processing program was '1183'.

Process 1183 is amqcrsta -m QSXGWP01

Any help gratefuly received.

Andrew.[/i]
_________________
Andrew Hirst
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Wed Oct 20, 2004 9:02 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

Way more info is needed to help. What are the queue defs/names and QM names in this scenario?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
RogerLacroix
PostPosted: Wed Oct 20, 2004 9:25 am    Post subject: Reply with quote

Jedi Knight

Joined: 15 May 2001
Posts: 3264
Location: London, ON Canada

Hi,

RC=2085 in the DLH can be 1 of 2 causes:
(1) Unknown queue name (but you say it is there)
(2) Unknown queue manager name.

Check the QMgrName in the DLH and make sure it is either (1) same as the local queue manager or (2) It matches a QMgr Alias definition or (3) That there is a matching XMITQ of the same name.

Regards,
Roger Lacroix
_________________
Capitalware: Transforming tomorrow into today.
Connected to MQ!
Twitter
Back to top
View user's profile Send private message Visit poster's website
Nigelg
PostPosted: Wed Oct 20, 2004 11:53 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

I suspect that the destination qmgr in the reply msg is the gateway qmgr. and not the broker qmgr where the queue actually exists. The 2085 is returned because the dest queue does not exist on the gateway.

Roger's answer 2 above is correct, but it applies more to distributed queueing, not clustering.
1 above is not right; if you set the qmgr in the OD when posting to a cluster queue it has to be the qmgr that hosts the cluster queue, not the local qmgr.
3 is not right either; clusters do not use xmitqs other than the cluster xmitq.

Define a qmgr alias on the gateway, shared in the cluster, with a blank RQMNAME. Set the ReplyToQMgr in the MD of the original msg to this qmgr alias. The effect of this is that the qmgr alias is resolved to a blank qmgr name, which allows the normal cluster processing to find the host qmgr of the ReplyToQ. This technique is described in the Clusters manual.

For these sort of problems, study table 3 in the APG, Resolving queue names when using MQOPEN.
Back to top
View user's profile Send private message
andrewhirst
PostPosted: Wed Oct 20, 2004 11:53 pm    Post subject: Reply with quote

Apprentice

Joined: 06 Jul 2004
Posts: 33
Location: UK

Hi,

Here are the MQ definitions:
Gateway QMgr:
Code:

* Cluster Receiver Channel for CGBD1
* ----------------------------------
define channel (CGBD1.QSXGWP01) +
    chltype (CLUSRCVR) +
    trptype (TCP) +
    conname ('GATEWAY(1414)') +
    cluster (CGBD1) +
    descr ('Cluster-receiver channel for Cluster CGBD1.') +
    replace

* Cluster Sender Channel for CGBD1
* Broker1 is a full repository
* --------------------------------
define channel (CGBD1.QSMQID01) +
    chltype (CLUSSDR) +
    trptype (TCP) +
    conname ('BROKER1(1414)') +
    cluster (CGBD1) +
    descr ('Cluster-sender channel to the broker.') +
    replace

* Define Processes
DEFINE PROCESS(START_CH) +
   USERDATA('QSXGWP01.NVISRP01') +
   REPLACE

* Define transmission queue to remote server
DEFINE QLOCAL(NVISRP01) +
   DESCR('Transmission queue from QSXGWP01 to remote') +
   USAGE(XMITQ) +
   DEFPSIST(YES) +
   MAXMSGL(50000) +
                MAXDEPTH(200) +
   TRIGGER +
   INITQ('SYSTEM.CHANNEL.INITQ') +
   PROCESS(START_CH) +
   REPLACE

* Channel definitions
DEFINE CHANNEL('QSXGWP01.NVISRP01') +
   CHLTYPE(SDR) +
   DESCR('Sender Channel to remote server') +
   CONNAME('REMOTE(1414)') +
                TRPTYPE(TCP) +
   XMITQ(NVISRP01) +
   DISCINT(0) +
   MAXMSGL(50000) +
   REPLACE

DEFINE CHANNEL('NVISRP01.QSXGWP01') +
   CHLTYPE(RCVR) +
      DESCR('Receiver Channel from remote server to gateway box') +
                TRPTYPE(TCP) +
   MAXMSGL(50000) +
   REPLACE


Remote Server QMgr
Code:

* Define transmission queue
DEFINE QLOCAL(QSXGWP01) +
   USAGE(XMITQ) +
   DEFPSIST(YES) +
   MAXMSGL(50000) +
    MAXDEPTH(200) +
   TRIGGER +
   INITQ('SYSTEM.CHANNEL.INITQ') +
   PROCESS(START_CH) +
   REPLACE
   
* Define Processes
DEFINE PROCESS(START_CH) +
   USERDATA('NVISRP01.QSXGWP01') +
   REPLACE
 
* Channel definitions
DEFINE CHANNEL('NVISRP01.QSXGWP01') +
   CHLTYPE(SDR) +
   CONNAME('GATEWAY(1414)') +
    TRPTYPE(TCP) +
   XMITQ(QSXGWP01) +
   DISCINT(0) +
   MAXMSGL(50000) +
   REPLACE

DEFINE CHANNEL('QSXGWP01.NVISRP01') +
   CHLTYPE(RCVR) +
    TRPTYPE(TCP) +
   MAXMSGL(50000) +
   REPLACE

* Define remote queue.  Remote Q is located on Broker2
DEFINE QREMOTE(Q.ISR.VEHICLE.DETAILS.REPLY) +
   DEFPSIST(YES) +
   RNAME('Q.NAV.VEH.DET.REPLY') +
   RQMNAME('QSXGWP01') +
   XMITQ('QSXGWP01') +
   REPLACE


Broker2
Code:

* Cluster Receiver Channel for CGBD1
* ----------------------------------
define channel (CGBD1.QSMQID02) +
    chltype (CLUSRCVR) +
    trptype(TCP) +
    conname ('BROKER2(1415)') +
    cluster (CGBD1) +
    descr('Cluster-receiver channel for CGBD1') +
    maxmsgl (104857600) +
    replace


* Cluster Sender Channel for CGBD1
* --------------------------------
define channel (CGBD1.QSMQID01) +
    chltype (CLUSSDR) +
    trptype(TCP) +
    conname ('BROKER1(1414)') +
    cluster (CGBD1) +
    descr ('Cluster-sender channel to repository ') +
    maxmsgl (104857600) +
    replace

* will be used on the return message path.
define ql(Q.HUBGB.ISR.VEH.DET.RPLY) +
    descr ('Q for incoming vehicle details msg.') +
   maxmsgl (50000) +
    defpsist (NO) +
   cluster (CGBD1) +
   maxdepth (200) +
   noshare +
   replace
   
* Define alias queue for navigator's reply message.  TARGQ is in CGBD1 cluster.
define qa(Q.NAV.VEH.DET.REPLY) +
    targq (Q.HUBGB.VEH.DET.RPLY) +
   descr ('Remote queue for messages.') +
   defpsist (YES) +
   cluster (CGBD1) +
   defbind (NOTFIXED) +
   replace



As you can see, the gateway box has no local queue defs, but relies upon an alias (Q.NAV.VEH.DET.REPLY) on Broker2 to a local queue (Q.HUBGB.VEH.DET.RPLY)also on Broker 2. I can post messages from the gateway to the alias, but the remote application can not.

Could the underlying problem be access rights? I have created a profile for the remote user and added it to the mqm group on the gateway box and Broker2, without any improvement. However, when I logged on to the gateway using the new profile I could not send messages to the Q.NAV.VEH.DET.REPLY queue, nor could I post to a local test queue. Error returned was RC2035.... MQRC_NOT_AUTHORIZED. So I asked the remote app to send messages using the user set to mqm. No improvement.

TIA
_________________
Andrew Hirst
Back to top
View user's profile Send private message
Nigelg
PostPosted: Wed Oct 20, 2004 11:57 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

Did you see my answer above the definitions? Out posts have the same time!
Back to top
View user's profile Send private message
Nigelg
PostPosted: Thu Oct 21, 2004 1:16 am    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

In case anybody was wondering where amqcrsta gets the qmgr name from to put in the OD...

The qmgr name in the OD is the qmgr name from the XQH.
The qmgr name in the XQH is the name of the qmgr in the remote queue definition on the qmgr where the msg was put.
Back to top
View user's profile Send private message
andrewhirst
PostPosted: Thu Oct 21, 2004 2:31 am    Post subject: Reply with quote

Apprentice

Joined: 06 Jul 2004
Posts: 33
Location: UK

So, how does this look?:

Gateway QMgr
Code:

DEFINE QREMOTE('A.GATEWAY') RNAME('') RQMNAME('')


Remote QMgr:
Code:

DEFINE QREMOTE(Q.ISR.VEHICLE.DETAILS.REPLY) +
   RNAME('Q.NAV.VEH.DET.RPLY') +
   RQMNAME('A.GATEWAY') +
   XMITQ('QSXGWP01')


The original app (a message flow in a broker) sets ReplyToQMgr in the MQMD to A.GATEWAY.

The remote app will also need to change the way that it works and extract the ReplyToQMgr from the MQMD
_________________
Andrew Hirst
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » Peculiar 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.