Author |
Message
|
kirani |
Posted: Tue Jun 25, 2002 8:50 am Post subject: Report messages going to DLQ. |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
I am having a problem with Report messages.
I am setting following fields in my MQMD header,
MQMD.Expiry = 10 secs.
MQMD.ReplyToQMgr = 'AH1_TNL11'
MQMD.ReplyToQ = 'KI.REPORT'
MQMD.Report = MQRO_EXCEPTION | MQRO_COA | MQRO_COD | MQRO_EXPIRATION (integer value is 18876672)
I verified these values and they are getting set properly. I am writing this message on a remote queue, which points to a local queue on 'MQSI' queue manager. I have defined a pair of channels between these two queue managers and they are working fine.
I get only COA Report message in KI.REPORT queue on AH1_TNL11 queue manager. If an application picks up the message, COD report message is generated and it goes to MQSI.DLQ queue. If an application doesn't pickup the message, and after i do a browse on queue, an Expiry report message is generated as expected, but again it goes to MQSI.DLQ queue.
The DLH shows following values,
Reason Code: MQRC_NOT_AUTHORIZED
Destination Queue: KI.REPORT
Destination Queue Manager: AH1_TNL11
Any idea?? _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
mqonnet |
Posted: Tue Jun 25, 2002 1:14 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Kirani
Check out the following thread with a detailed explaination of why you are getting 2035.
http://www.mqseries.net/phpBB/viewtopic.php?topic=2680&forum=5&1
Cheers.
Kumar _________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
kirani |
Posted: Tue Jun 25, 2002 3:51 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Kumar,
Thanks for your reply. It didn't work though.
What surprises me is how come COA report message is able to reach the originating queue manager and it fails for other report messages? _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
nimconsult |
Posted: Wed Jun 26, 2002 1:18 am Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
I would suspect that the user that sends the COA (the channel agent) is not the same as the one that sends the COD. Can you check that you can reach the reply queue KI.REPORT from the server queue manager, using the same user as the application that consumes the message?
'hope this helps, _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
Back to top |
|
 |
mrlinux |
Posted: Wed Jun 26, 2002 4:11 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
What is the put authority of the rcvr channel on qmgr that receives the
Reports ????? _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
nimconsult |
Posted: Wed Jun 26, 2002 5:51 am Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
Jeff,
I guess that the scenario is the following:
- Kiran runs an application on a queue manager AH1_TNL11, which sends a message to another queue manager (let's call it QM2).
- On QM2, the receiver channel receives the message, produces a COA and puts it on the transmission queue back to AH1_TNL11. The authority of the receiver channel agent depends on the PUTAUT parameter of the channel definition. By default it is either the MCAUSER if one is defined, or the user that started the process (typically the receiver channel is started by the channel initiatior, which on W2K runs as a service with the system user id).
- On QM2, Kiran now starts an application (real application or API exerciser or whatever) and reads the initial message, MQ Series produces a COD and attempts to put it on the transmission back to AH1_TNL11, but this time with the authority of the application. If the user of the application does not have the authority to put a message on the transmission queue, the COD goes to the dead-letter queue. _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
Back to top |
|
 |
mrlinux |
Posted: Wed Jun 26, 2002 6:13 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
I got the wrong impression from the fact the messages were in the deadq,
usally the messages in the deadq are not from that queue manager, except in certain cases. _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
nimconsult |
Posted: Wed Jun 26, 2002 6:35 am Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
In "MQ Series Application Programming Guide", Part 1, Chapter 3, Types of Messages, Report Messages (on page 26 in the 13rd edition), you can read:
"If a report message cannot be delivered (if the queue is full, for instance), the report message will be placed on the dead-letter queue"
This behaviour specific to report messages is applicable on the sender side.
On the receiver side, report messages can also be sent on the dead-letter queue, just like any other messages. _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
Back to top |
|
 |
mqonnet |
Posted: Wed Jun 26, 2002 11:57 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Kirani,
[quote="kirani"]Kumar,
Thanks for your reply. It didn't work though.
What surprises me is how come COA report message is able to reach the originating queue manager and it fails for other report messages?[/quote]
The reason you get COA but not COD or expiration reports is because the path followed for the two is different. COA's are generated when an APP reads(browse/get) the specific message off the queue. Which means that this report(COA) generation is part of the applicaion request processing. Whereas, COD and Expiration reports are part of QMGR processing. QMGR is responsible to do that.
What i suspect here is, when you browse a msg using an app which generates a COA, the useridentifier that goes in is "mqm". But when the reports are generated by the QMGR, it uses the userid that the user is logged in as on the other Box, who may not have the respective principal on the originating Box.
In any case, defining a principal of that user on the 1st Box with minimum rights cannot harm, but resolve this problem.
Cheers.
Kumar _________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
kirani |
Posted: Wed Jun 26, 2002 2:54 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
All,
mqonet wrote: |
COA's are generated when an APP reads (browse/get) the specific message off the queue. Which means that this report (COA) generation is part of the application request processing. Whereas, COD and Expiration reports are part of QMGR processing. QMGR is responsible to do that.
Problem.
|
Kumar,
Not quite true. Here is what I know about COA & COD.
COA (Confirmation of Arrival) report messages are generated when the message is put on the target queue.
COD (Confirmation of Delivery) report messages are generated when the message is retrieved off the Target queue by the receiving application.
correct?
My setup is like this ...
I have a WMQI message flow (source application) running on WMQI server, which puts message to a remote queue (Q1) defined on AH1_TNL11. Q1 maps to a local queue, KI.LOCAL, on another queue manager, MQSI, which is on my local workstation. There are channels defined between these two queue managers. After I run my message flow, output message is written on to a remote queue (Q1) with user-id casswmqi.
Once MCA on MQSI delivers message on KI.LOCAL queue, the queue manager will generate COA message, which will go to replyToQ KI.REPORT on queue manager AH1_TNL11 specified in MQMD header. COA message indicates casswmqi as user-id in MQMD header.
After 10 seconds my message on queue KI.LOCAL on queue manager MQSI expires. After I browse the queue using MQSeries Explorer, Expiration report is generated, but this time the reprot message goes to DLQ of MQSI queue manager. User identifier is casswmqi in MQMD header for this message.
I have logged in a ci64 on my local workstation. casswmqi user-id is also defined on my local machine and following are the authorizations for these users.
Code: |
C:\>dspmqaut -m MQSI -t qmgr -p casswmqi
Entity casswmqi has the following authorizations for object MQSI:
inq
set
connect
altusr
crt
dlt
chg
dsp
setid
setall
C:\>dspmqaut -m MQSI -t qmgr -p ci64
Entity ci64 has the following authorizations for object MQSI:
inq
set
connect
altusr
crt
dlt
chg
dsp
setid
setall
|
Are we missing something? _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
mrlinux |
Posted: Wed Jun 26, 2002 7:42 pm Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
Yes authority to the queue itself, what is the put authority of the receiver channel on your MQSI box ????? If you set it to default this will work _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
kirani |
Posted: Wed Jun 26, 2002 8:38 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Jeff,
I didn't change any object authority so I would assume it is set to default. user-id casswmqi and ci64 is part of local mqm group on my workstation.
Tommorow I will run this command once again on other objects (channels/queues) and post the results here.
Thanks for your time. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
mqonnet |
Posted: Thu Jun 27, 2002 4:00 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Kiran,
Please replace COA to COD and vice versa in my previous comments. Sorry about the mix up... Have been too stressed out, looks like..:).
But yes, i would like to see if you have defined a principal "casswmqi" on QM AH1_TNL11. Because the output of dspmqaut that you posted refers to QM MQSI. If there is one defined, i would like to see the authorities to it. If it is not defined, define it and run your test case again.
Hope this helps.
Cheers.
Kumar _________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
nimconsult |
Posted: Thu Jun 27, 2002 4:55 am Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
Kumar,
I do not think that the problem is related to authority on QM AH1_TNL11, because the COA does not even leave the QM MQSI.
I come back to my previous statement:
The receiver channel agent on QM MQSI has the authority to put messages on the XMITQ (success to send COA), but the principal of the application does not have this authority (failure to send COD).
How to check this? Connect on QM MQSI (with the API exerciser for example) and post a message to KI.REPORT using the principal of the application.
How to solve the problem? Assign authority (with MQAUT) to put messages on xmitq (+connect +inq +set +setall on qmgr and +put +setall on queue). _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
Back to top |
|
 |
mqonnet |
Posted: Thu Jun 27, 2002 5:22 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Nicolas, let me clarify the reason i am stressing on my comments.
You are right in stating that the report msg never leaves MQSI qm, and hence we need to look in here and not the authorities of ANH1_TNL11. But the reason for me pointing it out is, when the message expires and the QM finds that it has to put the report onto a remote queue, the MCA tries to open the local queue at the other end. And this is where the whole issue of authorities at the other end come into picture. If you are not authorized to open and put the message on the other end, the qmgr puts the message into the local qm dlq.
At least that's my understanding. I am opent to comments..
Cheers.
Kumar _________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
|