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 » Clustering » Configur remote q to link an alias q

Post new topic  Reply to topic Goto page Previous  1, 2, 3, 4, 5, 6  Next
 Configur remote q to link an alias q « View previous topic :: View next topic » 
Author Message
hisham.rakha
PostPosted: Tue Jan 22, 2019 9:37 am    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

bruce2359 wrote:
Let’s start over. Was the message supposed to arrive on QMC? If not, then look at your QR definitions on the qmgr where you created the test message.

Use MQSC to display all of the attributes of the QR that you use to put a test message. Post results here.

What I want to do send the response of msg from QM D to QM A or QM B through the GTWY QM so I defined RQ on QM D as mentioned above to send the respone to the defined QA as mentioned above to locate it in the LQ LQ_OUT which defined on QM A & B

Note: QM A, B and C on cluster GWYMQSTG and QM C which is the gateway is FR and QM A & B are PR

dis qr(RQ_ESB)
3 : dis qr(RQ_ESB)
AMQ8409: Display Queue details.
QUEUE(RQ_ESB) TYPE(QREMOTE)
ALTDATE(2019-01-22) ALTTIME(12.58.13)
CLUSNL( ) CLUSTER( )
CLWLPRTY(0) CLWLRANK(0)
CUSTOM( ) DEFBIND(OPEN)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DESCR( )
PUT(ENABLED) RQMNAME(AQ_OUT)
RNAME(LQ_OUT) SCOPE(QMGR)
XMITQ(TQ_IN)
Back to top
View user's profile Send private message
bruce2359
PostPosted: Tue Jan 22, 2019 10:34 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

So, the replying application will MQOPEN RQ_ESB) to MQPUT the reply message destined for the gateway qmgr?

Your QRemote definition

Quote:
dis qr(RQ_ESB)
3 : dis qr(RQ_ESB)
AMQ8409: Display Queue details.
QUEUE(RQ_ESB) TYPE(QREMOTE)
ALTDATE(2019-01-22) ALTTIME(12.58.13)
CLUSNL( ) CLUSTER( )
CLWLPRTY(0) CLWLRANK(0)
CUSTOM( ) DEFBIND(OPEN)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DESCR( )
PUT(ENABLED) RQMNAME(AQ_OUT)
RNAME(LQ_OUT) SCOPE(QMGR)
XMITQ(TQ_IN)


...tells this qmgr that the reply message is needs to be sent to RQMNAME(AQ_OUT).

AQ_OUT is NOT the gateway qmgr name via transmission queue TQ_IN.

Some helpful guidelines here:
For clarity, transmission queues should (not must) be named the same name as the qmgr at the other end of the channel. What qmgr is at the other end of TQ_IN? What are your channel names?

Look here for example of qmgr cluster with gateway https://developer.ibm.com/recipes/tutorials/advanced-clustering-techniques-using-ibm-mq/
_________________
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
View user's profile Send private message
hisham.rakha
PostPosted: Tue Jan 22, 2019 11:40 am    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

bruce2359 wrote:
So, the replying application will MQOPEN RQ_ESB) to MQPUT the reply message destined for the gateway qmgr?

Your QRemote definition

Quote:
dis qr(RQ_ESB)
3 : dis qr(RQ_ESB)
AMQ8409: Display Queue details.
QUEUE(RQ_ESB) TYPE(QREMOTE)
ALTDATE(2019-01-22) ALTTIME(12.58.13)
CLUSNL( ) CLUSTER( )
CLWLPRTY(0) CLWLRANK(0)
CUSTOM( ) DEFBIND(OPEN)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DESCR( )
PUT(ENABLED) RQMNAME(AQ_OUT)
RNAME(LQ_OUT) SCOPE(QMGR)
XMITQ(TQ_IN)


...tells this qmgr that the reply message is needs to be sent to RQMNAME(AQ_OUT).

AQ_OUT is NOT the gateway qmgr name via transmission queue TQ_IN.

Some helpful guidelines here:
For clarity, transmission queues should (not must) be named the same name as the qmgr at the other end of the channel. What qmgr is at the other end of TQ_IN? What are your channel names?

Look here for example of qmgr cluster with gateway https://developer.ibm.com/recipes/tutorials/advanced-clustering-techniques-using-ibm-mq/
Quote:


This transmission q on QM D
So if i have to name the transmission same as the final destinqtion qmr, in my case I have 2 qmrs QM A & B, What shall I name it? Or shall I name it same as the GTWY qmr QM C with has the AQ q?
Back to top
View user's profile Send private message
bruce2359
PostPosted: Tue Jan 22, 2019 12:56 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

I may have misunderstood your configuration. Are you saying that you have created SENDER-RECEIVER channels (not cluster channels) betwen each PR and FR, and gateway?

The only SENDER-RECEIVER channels needed are to/from non-cluster qmgr and gateway cluster qmgr.
_________________
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
View user's profile Send private message
hughson
PostPosted: Tue Jan 22, 2019 2:30 pm    Post subject: Reply with quote

Padawan

Joined: 09 May 2013
Posts: 1914
Location: Bay of Plenty, New Zealand

hisham.rakha wrote:
hughson wrote:


We know from your original question that your alias queue is defined as follows:
hisham.rakha wrote:
DEFINE QALIAS(AQ_OUT) TARGQ(LQ_OUT) CLUSTER(GTWYCLUSTER)


Assuming that this LQ_OUT queue is indeed defined on QMA and QMB as you say it is, and that QMC can see it, I suspect you are failing because the ObjectQmgrName is filled in with GWYMQSTG as per the other definition you provided us with.

hisham.rakha wrote:
DEFINE QREMOTE (RQ_ESB) RNAME(AQ_OUT) RQMNAME(GWYMQSTG) XMITQ(TQ_IN) CLUSTER(' ') REPLACE


As @bruce2359 has requested, the entire Dead-letter header would help in diagnosing this.

Cheers,
Morag


DLH
Code:
00000 44 4C 48 20 00 00 00 01--00 00 07 D1 41 51 5F 54 |DLH .......LQ|
00010 32 34 5F 4F 55 54 20 20--20 20 20 20 20 20 20 20 |_OUT         |
00020 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 |             |
00030 20 20 20 20 20 20 20 20--20 20 20 20 47 57 59 4D |     GWYMQSTG|
00040 51 30 31 53 54 47 44 43--31 20 20 20 20 20 20 20 |             |
00050 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 |             |
00060 20 20 20 20 20 20 20 20--20 20 20 20 00 00 02 22 |         ..."|
00070 00 00 04 B8 4D 51 53 54--52 20 20 20 00 00 00 06 |...MQSTR ....|
00080 61 6D 71 72 6D 70 70 61--20 20 20 20 20 20 20 20 |amqrmppa     |
00090 20 20 20 20 20 20 20 20--20 20 20 20 32 30 31 39 |         2019|
000A0 30 31 32 32 31 32 33 39--32 31 37 39 66 66 66    |012212392179fff |


Thank you for providing the DLQ message - that is very helpful. De-coding this hex-dump of the message into the DLH fields, we get:-

Code:
[  175 bytes] Dead Letter Queue Header (MQDLH)
StrucId      :'DLH '
Version      :1
Reason       :2001 (Alias queue type error.)
Dest. Queue  :'AQ_T24_OUT                                      '
Dest. QMgr   :'GWYMQ01STGDC1                                   '
MQEncoding   :0x'222' (Reversed)
CCSID        :1208 (UTF-8)
Format       :'MQSTR   '
PutApplType  :6 (UNIX)
PutApplName  :'amqrmppa                    '
Put Date     :'20190122'
Put Time     :'12392179'


This DLH message appears to be reporting an MQRC_ALIAS_BASE_Q_TYPE_ERROR (2001). You said your problem was MQRC_UNKNOWN_ALIAS_BASE_Q (2082). Is this a new problem now? It also appears to be for a different queue - and you've edited the ASCII column so it doesn't match? I guess you've been simplifying your queue names for the purposes of asking the question which is fine.

So please provide the definition of AQ_T24_OUT and the definition of the TARGET queue it references. It would appear that this alias is pointing at a queue type it is not allowed to point at.

Cheers,
Morag
_________________
Morag Hughson @MoragHughson
IBM MQ Technical Education Specialist
Get your IBM MQ training here!
MQGem Software
Back to top
View user's profile Send private message Visit poster's website
bruce2359
PostPosted: Tue Jan 22, 2019 4:57 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

In the usual request-reply application design model, the requesting app populates the MQMD of the RequestMessage with ReplyToQueue and ReplyToQueueManager fields. This tells the responding app where/how to send the ReplyMessage.

The responding app uses these two MQMD fields to MQPUT the ReplyMessage to the ReplyToQueue on the ReplyToQueueManager.

Are you trying to implement this scenario? Or something different?
_________________
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.


Last edited by bruce2359 on Tue Jan 22, 2019 10:00 pm; edited 2 times in total
Back to top
View user's profile Send private message
hisham.rakha
PostPosted: Tue Jan 22, 2019 9:56 pm    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

hughson wrote:
hisham.rakha wrote:
hughson wrote:


We know from your original question that your alias queue is defined as follows:
hisham.rakha wrote:
DEFINE QALIAS(AQ_OUT) TARGQ(LQ_OUT) CLUSTER(GTWYCLUSTER)


Assuming that this LQ_OUT queue is indeed defined on QMA and QMB as you say it is, and that QMC can see it, I suspect you are failing because the ObjectQmgrName is filled in with GWYMQSTG as per the other definition you provided us with.

hisham.rakha wrote:
DEFINE QREMOTE (RQ_ESB) RNAME(AQ_OUT) RQMNAME(GWYMQSTG) XMITQ(TQ_IN) CLUSTER(' ') REPLACE


As @bruce2359 has requested, the entire Dead-letter header would help in diagnosing this.

Cheers,
Morag


DLH
Code:
00000 44 4C 48 20 00 00 00 01--00 00 07 D1 41 51 5F 54 |DLH .......LQ|
00010 32 34 5F 4F 55 54 20 20--20 20 20 20 20 20 20 20 |_OUT         |
00020 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 |             |
00030 20 20 20 20 20 20 20 20--20 20 20 20 47 57 59 4D |     GWYMQSTG|
00040 51 30 31 53 54 47 44 43--31 20 20 20 20 20 20 20 |             |
00050 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 |             |
00060 20 20 20 20 20 20 20 20--20 20 20 20 00 00 02 22 |         ..."|
00070 00 00 04 B8 4D 51 53 54--52 20 20 20 00 00 00 06 |...MQSTR ....|
00080 61 6D 71 72 6D 70 70 61--20 20 20 20 20 20 20 20 |amqrmppa     |
00090 20 20 20 20 20 20 20 20--20 20 20 20 32 30 31 39 |         2019|
000A0 30 31 32 32 31 32 33 39--32 31 37 39 66 66 66    |012212392179fff |


Thank you for providing the DLQ message - that is very helpful. De-coding this hex-dump of the message into the DLH fields, we get:-

Code:
[  175 bytes] Dead Letter Queue Header (MQDLH)
StrucId      :'DLH '
Version      :1
Reason       :2001 (Alias queue type error.)
Dest. Queue  :'AQ_T24_OUT                                      '
Dest. QMgr   :'GWYMQ01STGDC1                                   '
MQEncoding   :0x'222' (Reversed)
CCSID        :1208 (UTF-8)
Format       :'MQSTR   '
PutApplType  :6 (UNIX)
PutApplName  :'amqrmppa                    '
Put Date     :'20190122'
Put Time     :'12392179'


This DLH message appears to be reporting an MQRC_ALIAS_BASE_Q_TYPE_ERROR (2001). You said your problem was MQRC_UNKNOWN_ALIAS_BASE_Q (2082). Is this a new problem now? It also appears to be for a different queue - and you've edited the ASCII column so it doesn't match? I guess you've been simplifying your queue names for the purposes of asking the question which is fine.

So please provide the definition of AQ_T24_OUT and the definition of the TARGET queue it references. It would appear that this alias is pointing at a queue type it is not allowed to point at.

Cheers,
Morag


When I posted this I gave an example names for the QMRs and queues but the mentioned topology as same as provided, I have core banking app. on the same server that has the QMR D, the core banking app. will send the response of msg to QMR D which out of the cluster and then QMR D will send this response to QMR A or B based on the ReplyToQueue and ReplyToQmanager on the MQMD through GTWY QMR C.

Still having the same error 'MQRC_UNKNOWN_ALIAS_BASE_Q' witch located in the DLQ on GTWY QMR C when the response send from QMR D.

00000 44 4C 48 20 00 00 00 01--00 00 08 22 41 51 5F 54 |DLH ......."AQ_T|
00010 32 34 5F 4F 55 54 20 20--20 20 20 20 20 20 20 20 |24_OUT |
00020 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 | |
00030 20 20 20 20 20 20 20 20--20 20 20 20 47 57 59 4D | GWYM|
00040 51 30 31 53 54 47 44 43--31 20 20 20 20 20 20 20 |Q01STGDC1 |
00050 20 20 20 20 20 20 20 20--20 20 20 20 20 20 20 20 | |
00060 20 20 20 20 20 20 20 20--20 20 20 20 00 00 02 22 | ..."|
00070 00 00 04 B8 4D 51 53 54--52 20 20 20 00 00 00 06 |...¸MQSTR ....|
00080 61 6D 71 72 6D 70 70 61--20 20 20 20 20 20 20 20 |amqrmppa |
00090 20 20 20 20 20 20 20 20--20 20 20 20 32 30 31 39 | 2019|
000A0 30 31 32 33 30 36 30 35--35 38 36 31 67 67 |012306055861gg |



dis QA(AQ_T24_OUT)
2 : dis QA(AQ_T24_OUT)
AMQ8409: Display Queue details.
QUEUE(AQ_T24_OUT) TYPE(QALIAS)
ALTDATE(2019-01-22) ALTTIME(15.05.37)
TARGET(LQ_T24_OUT) CLUSNL( )
CLUSTER(GTWYCLUSTER) CLWLPRTY(0)
CLWLRANK(0) CUSTOM( )
DEFBIND(NOTFIXED) DEFPRTY(0)
DEFPSIST(NO) DEFPRESP(SYNC)
DEFREADA(NO) DESCR( )
GET(ENABLED) PUT(ENABLED)
PROPCTL(COMPAT) SCOPE(QMGR)
TARGTYPE(QUEUE)



dis ql(LQ_T24_OUT)
1 : dis ql(LQ_T24_OUT)
AMQ8409: Display Queue details.
QUEUE(LQ_T24_OUT) TYPE(QLOCAL)
ACCTQ(QMGR) ALTDATE(2019-01-22)
ALTTIME(13.40.49) BOQNAME(LQ_T24_OUT_BO)
BOTHRESH(0) CLUSNL( )
CLUSTER(GTWYCLUSTER) CLCHNAME( )
CLWLPRTY(0) CLWLRANK(0)
CLWLUSEQ(QMGR) CRDATE(2017-10-26)
CRTIME(14.43.57) CURDEPTH(0)
CUSTOM( ) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DEFREADA(NO)
DEFSOPT(SHARED) DEFTYPE(PREDEFINED)
DESCR( ) DISTL(NO)
GET(ENABLED) HARDENBO
INITQ( ) IPPROCS(1)
MAXDEPTH(999999999) MAXMSGL(4194304)
MONQ(QMGR) MSGDLVSQ(PRIORITY)
NOTRIGGER NPMCLASS(NORMAL)
OPPROCS(0) PROCESS( )
PUT(ENABLED) PROPCTL(COMPAT)
QDEPTHHI(80) QDEPTHLO(20)
QDPHIEV(DISABLED) QDPLOEV(DISABLED)
QDPMAXEV(ENABLED) QSVCIEV(NONE)
QSVCINT(999999999) RETINTVL(999999999)
SCOPE(QMGR) SHARE
STATQ(QMGR) TRIGDATA( )
TRIGDPTH(1) TRIGMPRI(0)
TRIGTYPE(FIRST) USAGE(NORMAL)


Last edited by hisham.rakha on Tue Jan 22, 2019 11:23 pm; edited 1 time in total
Back to top
View user's profile Send private message
hisham.rakha
PostPosted: Tue Jan 22, 2019 9:58 pm    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

bruce2359 wrote:
In the usual request-reply application design model, the requesting app populates the MQMD of the RequestMessage with ReplyToQueue and ReplyToQueueManager fields. This tells the responding app where/how to send the ReplyMessage.

The responding app uses these two MQMD fields to MQPUT the ReplyMessage to the ReplyToQueue on the ReplyToQueueManager.

Are you trying to implement this scenario? Or something different?


Yes exactly.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Tue Jan 22, 2019 10:01 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

hisham.rakha wrote:
bruce2359 wrote:
In the usual request-reply application design model, the requesting app populates the MQMD of the RequestMessage with ReplyToQueue and ReplyToQueueManager fields. This tells the responding app where/how to send the ReplyMessage.

The responding app uses these two MQMD fields to MQPUT the ReplyMessage to the ReplyToQueue on the ReplyToQueueManager.

Are you trying to implement this scenario? Or something different?


Yes exactly.

In a configuration where all qmgrs are cluster-qmgrs, messages will travel from one cluster-qmgr to another across CLUSSDRA or CLUSSDRB channels. There will be no need for explicitly defined SENDER-RECEIVER (or equivalent) channels, no explicitly defined non-cluster transmission queues, no need for QRemote queue definitions.

In a configuration with cluster-qmgrs and a non-cluster-qmgr, messages to and from the non-cluster-qmgr, will travel across SENDER-RECEIVER channels to the gateway qmgr; and from there (if necessary) across CLUSSDRA/B channels to a cluster-qmgr hosting a cluster-queue. No need to create SENDER-RECEIVER channels, transmission queues, etc. between the cluster-qmgrs.
_________________
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
View user's profile Send private message
bruce2359
PostPosted: Wed Jan 23, 2019 6:40 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

I've re-read this entire post. From the definitions you have provided here, the final destination for your message(s) seems to be LQ_OUT or QL_OUT. The name QL_OUT appears in the DLH. I do not see a definition for local queue QL_OUT.

On whatever qmgr hosts LQ_OUT, use MQSC to display the real local queue with all of its attributes and values QL_OUT.
_________________
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
View user's profile Send private message
hughson
PostPosted: Wed Jan 23, 2019 1:39 pm    Post subject: Reply with quote

Padawan

Joined: 09 May 2013
Posts: 1914
Location: Bay of Plenty, New Zealand

OK this question is getting a little confusing with all the different definitions and error codes, so let's start from scratch.

You have a cluster of three queue managers (QMA, QMB, QMC) and QMC acts as a gateway to QMD. You are replying to a message that was sent to QMD and putting the reply message back into the cluster using the standard practice of doing a put to ReplyToQ and ReplyToQMgr from the MQMD of the request message.

This MQPUT of a reply message from QMD results in the message landing on the DLQ on QMC with the following Dead-letter message.

Code:
[  174 bytes] Dead Letter Queue Header (MQDLH)
StrucId      :'DLH '
Version      :1
Reason       :2082 (Unknown alias base queue.)
Dest. Queue  :'AQ_T24_OUT                                      '
Dest. QMgr   :'GWYMQ01STGDC1                                   '
MQEncoding   :0x'222' (Reversed)
CCSID        :1208 (UTF-8)
Format       :'MQSTR   '
PutApplType  :6 (UNIX)
PutApplName  :'amqrmppa                    '
Put Date     :'20190123'
Put Time     :'06055861'


This is the equivalent of an application trying to put to the queue AQ_T24_OUT with the queue manager name of GWYMQ01STGDC1.

From what you have told us, the alias queue AQ_T24_OUT is defined thus:-

hisham.rakha wrote:
QUEUE(AQ_T24_OUT) TYPE(QALIAS)
ALTDATE(2019-01-22) ALTTIME(15.05.37)
TARGET(LQ_T24_OUT) CLUSNL( )
CLUSTER(GTWYCLUSTER) CLWLPRTY(0)
CLWLRANK(0) CUSTOM( )
DEFBIND(NOTFIXED) DEFPRTY(0)
DEFPSIST(NO) DEFPRESP(SYNC)
DEFREADA(NO) DESCR( )
GET(ENABLED) PUT(ENABLED)
PROPCTL(COMPAT) SCOPE(QMGR)
TARGTYPE(QUEUE)


What you haven't told us is whether queue manager name GWYMQ01STGDC1 is actually the name of any of your queue managers? You refer to them as QMA, QMB, QMC to keep the description of the environment simple, but this is actually the crux of the question.

One thing you can do is run the sample amqsput on QMC as follows:-

Code:
amqsput AQ_T24_OUT QMC 8208 0 GWYMQ01STGDC1


This is the equivalent of what the DLHeader says is wrong. It should result in the same return code 2082

What I believe is happening is that the target queue LQ_T24_OUT is only defined on QMA and QMB and not on QMC (aka GWYMQ01STGDC1), but you are addressing it in a fully qualified manner. You are asking to put to queue AQ_T24_OUT on qmgr GWYMQ01STGDC1, which resolves to queue LQ_T24_OUT on qmgr GWYMQ01STGDC1.

What I believe you *WANT* to do is ask to put to queue AQ_T24_OUT on qmgr blank, to allow clustering to route the message to one of the two queues on QMA and QMB? Is this true? If so, you need to add some queue manager aliasing so you can blank out the queue manager name when the message arrives on QMC.

So some questions we REALLY need the answers to in order to help you.

1. What are the real names of the queue managers?
2. Do you really want to workload balance the reply?
3. Do you want the reply to go back to the queue manager that sent the response message?

Cheers,
Morag
_________________
Morag Hughson @MoragHughson
IBM MQ Technical Education Specialist
Get your IBM MQ training here!
MQGem Software
Back to top
View user's profile Send private message Visit poster's website
bruce2359
PostPosted: Thu Jan 24, 2019 6:39 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

hisham.rakha wrote:
bruce2359 wrote:
You seem unwilling to answer questions you have been asked.

Exactly how did you test? What application did you use? For each MQ call the app issues, the application is returned CompletionCode and ReasonCode. What ReasonCode did you receive when you executed the app?


I’m using MQ Explorere to put test msg from QM D via Remote q RQ_ESB trying to send the msg to alias q defined on QM C to eventually locate the msg into the target q defined in the alias q LQ_OUT into QM A and QM B basedon the replytoqueue and replytoqueuemanager

I deeply serched on the test msg and did not find it on the DLQ orany system q ever
P.S: the target q LQ_OUT defined only on QM A and B

The only queue type that can hold messages is a QLocal. All other queue types (QModel, QAlias, QRemote) are merely definitions that must resolve to a QLocal.

Use MQSC to display the QLocal definition of LQ_OUT attributes and values on both QMA and QMB. Post results here.
_________________
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
View user's profile Send private message
hisham.rakha
PostPosted: Sat Jan 26, 2019 10:10 am    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

hughson wrote:
OK this question is getting a little confusing with all the different definitions and error codes, so let's start from scratch.

You have a cluster of three queue managers (QMA, QMB, QMC) and QMC acts as a gateway to QMD. You are replying to a message that was sent to QMD and putting the reply message back into the cluster using the standard practice of doing a put to ReplyToQ and ReplyToQMgr from the MQMD of the request message.

This MQPUT of a reply message from QMD results in the message landing on the DLQ on QMC with the following Dead-letter message.

Code:
[  174 bytes] Dead Letter Queue Header (MQDLH)
StrucId      :'DLH '
Version      :1
Reason       :2082 (Unknown alias base queue.)
Dest. Queue  :'AQ_T24_OUT                                      '
Dest. QMgr   :'GWYMQ01STGDC1                                   '
MQEncoding   :0x'222' (Reversed)
CCSID        :1208 (UTF-8)
Format       :'MQSTR   '
PutApplType  :6 (UNIX)
PutApplName  :'amqrmppa                    '
Put Date     :'20190123'
Put Time     :'06055861'


This is the equivalent of an application trying to put to the queue AQ_T24_OUT with the queue manager name of GWYMQ01STGDC1.

From what you have told us, the alias queue AQ_T24_OUT is defined thus:-

hisham.rakha wrote:
QUEUE(AQ_T24_OUT) TYPE(QALIAS)
ALTDATE(2019-01-22) ALTTIME(15.05.37)
TARGET(LQ_T24_OUT) CLUSNL( )
CLUSTER(GTWYCLUSTER) CLWLPRTY(0)
CLWLRANK(0) CUSTOM( )
DEFBIND(NOTFIXED) DEFPRTY(0)
DEFPSIST(NO) DEFPRESP(SYNC)
DEFREADA(NO) DESCR( )
GET(ENABLED) PUT(ENABLED)
PROPCTL(COMPAT) SCOPE(QMGR)
TARGTYPE(QUEUE)


What you haven't told us is whether queue manager name GWYMQ01STGDC1 is actually the name of any of your queue managers? You refer to them as QMA, QMB, QMC to keep the description of the environment simple, but this is actually the crux of the question.

One thing you can do is run the sample amqsput on QMC as follows:-

Code:
amqsput AQ_T24_OUT QMC 8208 0 GWYMQ01STGDC1


This is the equivalent of what the DLHeader says is wrong. It should result in the same return code 2082

What I believe is happening is that the target queue LQ_T24_OUT is only defined on QMA and QMB and not on QMC (aka GWYMQ01STGDC1), but you are addressing it in a fully qualified manner. You are asking to put to queue AQ_T24_OUT on qmgr GWYMQ01STGDC1, which resolves to queue LQ_T24_OUT on qmgr GWYMQ01STGDC1.

What I believe you *WANT* to do is ask to put to queue AQ_T24_OUT on qmgr blank, to allow clustering to route the message to one of the two queues on QMA and QMB? Is this true? If so, you need to add some queue manager aliasing so you can blank out the queue manager name when the message arrives on QMC.

So some questions we REALLY need the answers to in order to help you.

1. What are the real names of the queue managers?
2. Do you really want to workload balance the reply?
3. Do you want the reply to go back to the queue manager that sent the response message?

Cheers,
Morag


The real QMGRs names are as follow, QMA is ESBMQ01STGDC1, QMB is ESBMQ02STGDC1, QMC is GWYMQ01STGDC1 and QMD T24MQDC1
Yes I do want to workload balance the reply.
Yes I do want the reply to go back to the queue manager that sent the request message wich is ESBMQ01STGDC1 and ESBMQ02STGDC1

I executed below twice from the gateway QMGR and msg received well to LQ_T24_OUT on ESBMQ01STGDC1 and ESBMQ02STGDC1 but the problem when send the msg from the T24MQDC1 QMGR via QR it is located in DLQ on gateway QMGR with "MQRC_UNKNOWN_ALIAS_BASE_Q"

amqsput AQ_T24_OUT GWYMQ01STGDC1

I need to highlight that QMGR ESBMQ01STGDC1 and ESBMQ02STGDC1 always the requester QMGRs which mean they send the request to the QMGR T24MQDC1 via gateway QMGR GWYMQ01STGDC1 and the request sent well to it, but the problem here the response so I defined QR on T24MQDC1 QMGR with RNMAE "AQ_T24_OUT" and with RQMNAME "GWYMQ01STGDC1" and on the gateway QMGR the QA definition refers to TARGETQ "LQ_T24_OUT" which defined on ESBMQ01STGDC1 and ESBMQ02STGDC1

Would you please tell me how to De-code the hex-dump of message into the DLH fields or if using certain tool please provide its name.


Last edited by hisham.rakha on Sun Jan 27, 2019 4:38 am; edited 2 times in total
Back to top
View user's profile Send private message
hisham.rakha
PostPosted: Sat Jan 26, 2019 10:13 am    Post subject: Reply with quote

Apprentice

Joined: 13 Nov 2018
Posts: 39

bruce2359 wrote:
hisham.rakha wrote:
bruce2359 wrote:
You seem unwilling to answer questions you have been asked.

Exactly how did you test? What application did you use? For each MQ call the app issues, the application is returned CompletionCode and ReasonCode. What ReasonCode did you receive when you executed the app?


I’m using MQ Explorere to put test msg from QM D via Remote q RQ_ESB trying to send the msg to alias q defined on QM C to eventually locate the msg into the target q defined in the alias q LQ_OUT into QM A and QM B basedon the replytoqueue and replytoqueuemanager

I deeply serched on the test msg and did not find it on the DLQ orany system q ever
P.S: the target q LQ_OUT defined only on QM A and B

The only queue type that can hold messages is a QLocal. All other queue types (QModel, QAlias, QRemote) are merely definitions that must resolve to a QLocal.

Use MQSC to display the QLocal definition of LQ_OUT attributes and values on both QMA and QMB. Post results here.


dis ql(LQ_T24_OUT)
1 : dis ql(LQ_T24_OUT)
AMQ8409: Display Queue details.
QUEUE(LQ_T24_OUT) TYPE(QLOCAL)
ACCTQ(QMGR) ALTDATE(2019-01-22)
ALTTIME(13.40.49) BOQNAME(LQ_T24_OUT_BO)
BOTHRESH(0) CLUSNL( )
CLUSTER(GTWYCLUSTER) CLCHNAME( )
CLWLPRTY(0) CLWLRANK(0)
CLWLUSEQ(QMGR) CRDATE(2017-10-26)
CRTIME(14.43.57) CURDEPTH(0)
CUSTOM( ) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DEFREADA(NO)
DEFSOPT(SHARED) DEFTYPE(PREDEFINED)
DESCR( ) DISTL(NO)
GET(ENABLED) HARDENBO
INITQ( ) IPPROCS(1)
MAXDEPTH(999999999) MAXMSGL(4194304)
MONQ(QMGR) MSGDLVSQ(PRIORITY)
NOTRIGGER NPMCLASS(NORMAL)
OPPROCS(0) PROCESS( )
PUT(ENABLED) PROPCTL(COMPAT)
QDEPTHHI(80) QDEPTHLO(20)
QDPHIEV(DISABLED) QDPLOEV(DISABLED)
QDPMAXEV(ENABLED) QSVCIEV(NONE)
QSVCINT(999999999) RETINTVL(999999999)
SCOPE(QMGR) SHARE
STATQ(QMGR) TRIGDATA( )
TRIGDPTH(1) TRIGMPRI(0)
TRIGTYPE(FIRST) USAGE(NORMAL)
Back to top
View user's profile Send private message
bruce2359
PostPosted: Sat Jan 26, 2019 11:40 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
Location: US: west coast, almost. Otherwise, enroute.

Clusters with gateway qmgrs is discussed here https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/com.ibm.mq.con.doc/q017600_.htm

Please review.
_________________
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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page Previous  1, 2, 3, 4, 5, 6  Next Page 3 of 6

MQSeries.net Forum Index » Clustering » Configur remote q to link an alias q
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.