Author |
Message
|
mqonnet |
Posted: Tue Apr 09, 2002 12:29 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
As told you earlier, this one got me for sure.
Just to clarify one more thing. Could you please post the output of the following command
dis qmgr
Also could you please verify if you have any Aliases defined for this queue manager or the local queue do.day.queue.
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 |
|
 |
vinayak |
Posted: Tue Apr 09, 2002 12:37 pm Post subject: |
|
|
Novice
Joined: 07 Apr 2002 Posts: 17
|
Kumar,
I don't have any aliases defined .
Also these are the qmgr details
1.brain.queue.manager(source qmgr
1 : dis qmgr
AMQ8408: Display Queue Manager details.
DESCR(SWIFT services queue manager) DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
DEFXMITQ( ) CHADEXIT( )
COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) QMNAME(brain.queue.manager)
TRIGINT(999999999) MAXHANDS(256)
MAXUMSGS(10000) AUTHOREV(DISABLED)
INHIBTEV(DISABLED) LOCALEV(DISABLED)
REMOTEEV(DISABLED) PERFMEV(DISABLED)
STRSTPEV(ENABLED) CHAD(DISABLED)
CHADEV(DISABLED) MAXMSGL(4194304)
MAXPRTY(9) CCSID(819)
CMDLEVEL(500) PLATFORM(UNIX)
SYNCPT DISTL(YES)
2)dtc_srvc.queue.manager
1 : dis qmgr
AMQ8408: Display Queue Manager details.
DESCR(DTC services queue manager) DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
DEFXMITQ( ) CHADEXIT( )
COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) QMNAME(dtc_srvc.queue.manager)
TRIGINT(999999999) MAXHANDS(256)
MAXUMSGS(10000) AUTHOREV(DISABLED)
INHIBTEV(DISABLED) LOCALEV(DISABLED)
REMOTEEV(DISABLED) PERFMEV(DISABLED)
STRSTPEV(ENABLED) CHAD(DISABLED)
CHADEV(DISABLED) MAXMSGL(4194304)
MAXPRTY(9) CCSID(819)
CMDLEVEL(500) PLATFORM(UNIX)
SYNCPT DISTL(YES)
|
|
Back to top |
|
 |
mqonnet |
Posted: Tue Apr 09, 2002 12:53 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
And.... This is what is the problem.
Your QM names are in lower cases. That explains why "amqcrsta" worked fine. You need to change your remote queue definition at the sender end to include the QM name in lower case. You have to always use the same name as you define for the queue manager. If the QM is defined in lower case, then while including the name of QM in any definition, such as remote queue, you have to include the name within single quotes. So your remote queue definition MUST look something like
DEFINE QREMOTE(DO.DAY.QUEUE) RQMNAME('dtc_srvc.queue.manager') +
RNAME(DO.DAY.QUEUE) +
DESCR('Remote queue on DTC services QM') +
XMITQ(DTC_SRVC.QUEUE.MANAGER) REPLACE
Huh... Relieved that MQ still is intact...
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 |
|
 |
vinayak |
Posted: Tue Apr 09, 2002 1:05 pm Post subject: |
|
|
Novice
Joined: 07 Apr 2002 Posts: 17
|
Hey Kumar,
Thaaaaaaaank you very Much man. I had almost gone crazy with this MQ
Thanks to stefan tooo.
Cheers,
Vinayak |
|
Back to top |
|
 |
StefanSievert |
Posted: Tue Apr 09, 2002 1:29 pm Post subject: |
|
|
 Partisan
Joined: 28 Oct 2001 Posts: 333 Location: San Francisco
|
Vinayak,
glad that it works now and even happier that my first idea was not totally off topic. I have myself fallen into this pitfall far too often and have decided a long time ago to ONLY USE UPPERCASE names for MQ objects. This has proven to be extremely helpful because, depending on what part of MQ you touch, it behaves different. RUNMQSC folds everything to uppercase, the command line commands and sample programs take it as it is, like the GUI in NT. It's a bit of a mess. Anyway, just to answer Kumars comment:
Quote: |
On 2002-04-09 13:00, mqonnet wrote:
Vinayak,
As i mentioned earlier, AMQSBCG would not get any useful information. Reason being, all the info including the Reason code, is within the "Message" bit of the Amqsbcg output. Hence, what you need to do is, either get a program to display the Dead letter queue "Message" in appropriate format, or modify the Amqsbcg program by yourself and display each value from the buffer after MQGET using MQDLH structure. This would give the clear picutre.
By the way, how did you figure out that the error was 2087. Not quite sure if it would be logged to the mqerror log. And sure it will not and does not appear on the amqsbcg output.
Cheers.
Kumar
|
The output of amqsbcgc tells you everything you need to know (if you know the layout of the MQDLH structure, that is) :
00000000: 444C 4820 0000 0001
First four bytes: 'DLH ', then the structure version (1)
0000 0827 444F 2E44 'DLH .......'DO.D'
00000010: 4159 2E51 5545 5545 2020 2020 2020 2020 'AY.QUEUE '
00000020: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
Here we have the reason code: 827 hex = 2087 dec, followed by the destination queue name: DO.DAY.QUEUE
00000030: 2020 2020 2020 2020 2020 2020 4454 435F ' DTC_'
00000040: 5352 5643 2E51 5545 5545 2E4D 414E 4147 'SRVC.QUEUE.MANAG'
00000050: 4552 2020 2020 2020 2020 2020 2020 2020 'ER '
And here is the uppercase destination queue manager name of the original message, that could not be found!
00000060: 2020 2020 2020 2020 2020 2020 0000 0111 ' ....'
00000070: 0000 0333 4D51 5354 5220 2020 0000 0006 '...3MQSTR ....'
The Encoding was 273 (111hex), the CCSID was 819 (333hex), the message format was MQSTR...
00000080: 616D 7163 7273 7461 5F64 2020 2020 2020 'amqcrsta_d '
It was the TCP/IP receiver channel agent who had the problem (ie. it was an inbound message from a client/different queue manager
00000090: 2020 2020 2020 2020 2020 2020 3230 3032 ' 2002'
000000A0: 3034 3039 3139 3331 3336 3031 7465 7374 '040919313601test'
And Vinayak (the receiving agent) originally tried it on April 9th 2002 at 19:31:36.01 GMT. The message text was 'test'
Hope that makes any sense. I always found this to be the quickest way to determine what went wrong, when I haven't had a utility at hand to print the formatted MQDLH header (which is easy to write).
Cheers,
Stefan
_________________
Stefan Sievert
IBM Certified * MQSeries
In the end everything is right. If not, it's not the end.
[ This Message was edited by: StefanSievert on 2002-04-09 14:34 ]
[ This Message was edited by: StefanSievert on 2002-04-09 14:35 ] |
|
Back to top |
|
 |
mqonnet |
Posted: Tue Apr 09, 2002 1:39 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
You are right Stefan. One can very well see what is there in any message. And hence..
Quote
"As far as i understand you CANNOT see a message on DLQ in the appropriate format"..
was my earlier suggestion. And it is easy/handy as you also agreed to have an appropriate program to print the required messages on different queues. Such as DLQ, TQ and others.
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 |
|
 |
cvshiva |
Posted: Wed Jun 19, 2002 8:25 pm Post subject: |
|
|
 Apprentice
Joined: 04 Mar 2002 Posts: 35 Location: Chennai
|
Hi Vinayak,
May be a bit late...!!!
Being a bit inquisitive.. Did you get it fixed or not ?
If not I am happy to open the topic and get it fixed. If fixed can you let me know what was the problem. What my guess would be is the ObjectQMgrName / ObjectName and also the entry in the inetd.conf.
Regards _________________ Ramnath Shiva
IBM Certified SOA Specialist
IBM Certified MQSeries Specialist
Standard Scope International Pvt Ltd , Chennai |
|
Back to top |
|
 |
PeterPotkay |
Posted: Mon Jul 22, 2002 10:01 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Stefan,
How do you make the leap from 00 00 08 27 to 2087? I am looking at a message in my OS/390 dead letter queue and see 00 00 01 0B for the reason code and don't know what to make of it. I see my INIT queue in the DLH, as well as MQTRIG and CSQQTRMN, so I assume my trigger monitor is having problems.... _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
mqonnet |
Posted: Tue Jul 23, 2002 5:02 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Peter, as stefan explained, you need to walk through each bit of info and correlate with the MQDLH structure. That is how 00 00 08 27 to 2087 is resolved.
If this does not work out, then post your DLQ message and shall try to take it from there.
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 |
|
 |
PeterPotkay |
Posted: Tue Jul 23, 2002 5:10 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
I can find the reason code on the DLH no prob, I'm just curious on the formula used to get 00 00 08 27 to 2087. In this case it looks like take the last byte (27), split it, and insert the 2nd to last byte (0 . 2 08 7
That isn't the formula to use in all cases, is it? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
mqonnet |
Posted: Tue Jul 23, 2002 5:58 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Peter, there is no formula. As you can see, the message in DLQ has either Char or Numbers. Char is always MQCHAR, but numbers are always in HEX format.
Hence
0000 0827
The second byte has 0827 in hex and its equivalent in Dec is 2087.
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 |
|
 |
PeterPotkay |
Posted: Tue Jul 23, 2002 6:03 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
duh.
Thanks Kumar.
In what case do you have to do byte reversal to compensate for Big Endian/Little Endian? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
mqonnet |
Posted: Tue Jul 23, 2002 6:18 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Peter, i am not really sure of the answer to your question.
But in theory, you need to have a Hex representation of all the fields in the MQDLH structure, before you could decode it to a readable/understandable format. And if you dont have a hex representation in the Dead letter queue, for the DLH message, then you need to first decode the message into hex format using the respective structures for the different data sets.
But my assumption is that the bit/little endian is restricted to the system and does not involve MQ messages in it, and even if it does, MQ would not have any other format other than hex in DLQ. Which leads me to the conclusion that you would have a Valid Hex format in the Dead letter queue.
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 |
|
 |
arunmakhija |
Posted: Wed Feb 12, 2003 9:42 am Post subject: |
|
|
 Novice
Joined: 17 Jun 2002 Posts: 20 Location: Sydney
|
Hi Kumar
Can you send me the program which prints the Dead letter Queue Header
I am having same kind of problems and need to to the reason code why my mesgs is in dead letter queue
regards
Joey
That one was for Vinayak , sorry kumar.... but my input why we are discussing so much about figuring out a hex dump when you have std structures to read your messages off the DLQ... MQDLH
and infact as I recollect Vinayak did mention having a program which does print the MQDLH Quoting his message
Code: |
Kumar,
I got the reason code from another program which just reads
the header of the Dead letter Q and it is showing the same now too "
the famous "2087"
and i got the hex dump from amqbcg0.
This o/p from where i got the reason code might help u.
START OF MESSAGE NUMBER 1
MsgType = 8
Destination Queue Name = DO.DAY.QUEUE
Destination QMgr Name = DTC_SRVC.QUEUE.MANAGER
Sending Applicat Name = amqcrsta_d
Time Sent = 193136 (hhmmss)
Date Sent = 20020409 (yyyymmdd)
Delivery Failure Reason = 2087
DeadReplyQName =
DeadReplyQMgrName = brain.queue.manager
DeadFormat = MQDEAD
DeadPriority = 0
DeadPersistence = 0
DeadMsgType = 8
DeadMsgFlags = 0
DeadExpiry = -1
DeadMsgSeqNumber = 1
END OF MESSAGE 1
Thanks,
Vinayak |
It looks pretty good and easier than deriving formulas for reading the hex dump
I need something like that too and am sure all of us here would appreciate if Vinayak can send us the program
regards
Joey _________________ In Celebration of Being Alive !!! |
|
Back to top |
|
 |
mqonnet |
Posted: Wed Feb 12, 2003 10:38 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
You can easily compile a program by yourself to read a dlh structure. When i get a chance, i shall put up one on this site.
But in the meanwhile you could as well follow Stefan's detailed explaination to find out the reason code etc from the msgs on DLQ.
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 |
|
 |
|