Author |
Message
|
justrob |
Posted: Wed Jun 02, 2004 5:56 am Post subject: Message ID and MQ Version |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
I had a problem with message ID's being all the same - and this all happened after I upgraded from 5.o to 5.3. When I put to a queue using mqjexplorer to a 5.0 queue the message ID is different, when I do the same on 5.3 it's the same message id all the time.
am I crazy, or did I 'break' something by adding 5.3
I am (as we speak) adding CSD006 to see if it helps. |
|
Back to top |
|
 |
justrob |
Posted: Wed Jun 02, 2004 7:23 am Post subject: Didn't help |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
CSD06 didn't seem to change a thing... any ideas ? |
|
Back to top |
|
 |
kirani |
Posted: Wed Jun 02, 2004 11:08 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
There must be something in the program (MQJExplorer) which is causing this. Have you tried putting message using amqsput application on both the queue managers to see whether it does the same thing? _________________ 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 |
|
 |
justrob |
Posted: Wed Jun 02, 2004 11:37 am Post subject: |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
I've also tried it doing a 'amqsput'... when I put to a 5.0 queue manager each message has a different messageID, when I do the 'amqsput' to the 5.3 queue manager every message has exactly the same messageID.
I know the client that connects to me has only MQPMO_FAIL_IF_QUIESCING specified in the MQPMO - but when putting to a 5.0 queue manager a unique message ID was created. I suppose the code could be changed to add MQMI_NONE or MQPMO_NEW_MSG_ID, but before we change the code, I want to make sure it's absoultley necessary.
Any documentation I should be checking to see if this is 'normal' behaviour? |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Jun 02, 2004 11:57 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
How, exactly, are you determining that the message id's are the same? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
justrob |
Posted: Wed Jun 02, 2004 12:21 pm Post subject: |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
I just put 2 messages in a v5.3 queue using the IBM mq Explorer, then again with the explorer copied the MESSAGEID and MESSAGEID bytes below:
AMQ QMGR.SMMMH5 5¾@
414D5120514D47522E534D31434835201335BE4020000205
AMQ QMGR.SMMMH5 5¾@
414D5120514D47522E534D31434835201335BE4020000207
Here are the same messages put into a v5.0 queue manager
AMQ QMGR.SMMMH5 ³¾@ƒ
414D5120514D47522E534D3143483520B307BE40831B0000
AMQ QMGR.SMMMH5 ³¾@£
414D5120514D47522E534D3143483520B307BE40A31B0000
I realize the 'messageID bytes' are different, but the first line is 'messageID' - and they are identical ALWAYS in 5.3, but always different in 5.0. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Jun 02, 2004 12:28 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
justrob wrote: |
I realize the 'messageID bytes' are different, but the first line is 'messageID' - and they are identical ALWAYS in 5.3, but always different in 5.0. |
'messageID bytes' is the actual value of the message ID. If that's different, then the message ID is different.
The messageID line is a character representation of the byte values of the message ID. That means that non-printable byte values will not show up visually.
So your message IDs are different. You're just trying to compare them as if they were ASCII strings - which isn't valid. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
justrob |
Posted: Wed Jun 02, 2004 12:33 pm Post subject: |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
So even though the 'character representation' is identical, as long as the 'bytes' field is different - the message ID is different?
I guess i got confused by these characters... strange that with 5.0 they are different each time though.
Thanks for clearing my head - I thought I was going crazy. |
|
Back to top |
|
 |
clindsey |
Posted: Wed Jun 02, 2004 1:20 pm Post subject: |
|
|
Knight
Joined: 12 Jul 2002 Posts: 586 Location: Dallas, Tx
|
This may help to clarify it for you. One of the problems in trying to treat message ids or correlids as strings is that they may contain a binary zero, which c/c++ treats as a null terminator and considers it to be the end of string.
In ascii, 41 is A, 4D is M, 51 is Q and 20 is a space. Skip over a few bytes and then you see 40 which is @ and then another 20 which is a space. The next byte is 00 which the code sees as end of string an nothing else appears in print although it is still very much a part of the byte array.
A message id is 24 bytes. In your case only the 24th byte is different and it happens to occur in the part that is not printable.
Hope this helps,
Charlie |
|
Back to top |
|
 |
justrob |
Posted: Thu Jun 03, 2004 4:48 am Post subject: |
|
|
Apprentice
Joined: 30 Apr 2004 Posts: 26
|
Thank you all so much for your time (and smarts). It's all clear now. |
|
Back to top |
|
 |
JasonE |
Posted: Fri Jun 04, 2004 12:48 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
If it also helps, the algorithum to create the messageids changed on windows, so the last bit (time related) is written in non-intel format, ie the 0's come before the values. This highlights issues where the message id is incorrectly handled as character data, as you found out. |
|
Back to top |
|
 |
|