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 » Message Version is not supported

Post new topic  Reply to topic
 Message Version is not supported « View previous topic :: View next topic » 
Author Message
nana046
PostPosted: Thu Oct 18, 2007 3:38 pm    Post subject: Message Version is not supported Reply with quote

Newbie

Joined: 03 Aug 2007
Posts: 5

Hi All

I am new to MQ. Can any one please help to solve the below problem

At the server side everything is fine but the message is going to Dead Letter Queue the reason is " Message Version 16777216 is not supported".

Thanks
Naveen
Back to top
View user's profile Send private message
Nigelg
PostPosted: Thu Oct 18, 2007 9:49 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

There is not a lot of context in this question...

16777216 is equivalent to x01000000 on a byte-ordered (Unix) machine (other way round for Windows). This means that the Version in the header in the msg, which should be x00000001, has not been converted when the msg was read.

As to why this is the case, rather more information about the circumstances in which the error occurs is needed.
_________________
MQSeries.net helps those who help themselves..
Back to top
View user's profile Send private message
JuulV
PostPosted: Sun Oct 21, 2007 4:32 am    Post subject: Reply with quote

Apprentice

Joined: 05 Sep 2007
Posts: 28
Location: Belgium

Looks like you're sending messages between systems that use different encodings (most Unixes/linuxes use "normal ordering" - aka "little endian", i.e. they store the least significant digit of a number in the last byte of the field; mainly Windows use "reverse ordering" - aka "big endian", i.e. they store the most significant digit of a number in the last byte of the field).

Your problem might be solved by allowing the channels to convert the data automatically... but I guess you'll have to read up on the chapters on data conversion in WMQ
_________________
Juul Vanparijs
Senior Developer
Cressida Technology Ltd
Back to top
View user's profile Send private message Visit poster's website
fjb_saper
PostPosted: Sun Oct 21, 2007 11:40 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

JuulV wrote:
Looks like you're sending messages between systems that use different encodings (most Unixes/linuxes use "normal ordering" - aka "little endian", i.e. they store the least significant digit of a number in the last byte of the field; mainly Windows use "reverse ordering" - aka "big endian", i.e. they store the most significant digit of a number in the last byte of the field).

Your problem might be solved by allowing the channels to convert the data automatically... but I guess you'll have to read up on the chapters on data conversion in WMQ
nigelg wrote:
16777216 is equivalent to x01000000 on a byte-ordered (Unix)

Looks to me which ever way you look at it that the decimal value in reverse byte order would be 256 or 0x0100. No amount of conversion could fix that...
Make sure to use the constant literals in your platform and not set the numbers yourself. It is far too easy to make a mistake when you're setting the numbers yourself.

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
JuulV
PostPosted: Thu Oct 25, 2007 1:26 am    Post subject: Reply with quote

Apprentice

Joined: 05 Sep 2007
Posts: 28
Location: Belgium

@fjb_saper: not quite correct what you're saying... Version is an MQLONG (so a 32-bit signed integer), thus 16777216 is 0x01000000. This is exactly the value that a BIG-ENDIAN machine uses to store the decimal value 1. If this data is sent to LITTLE-ENDIAN system WITH conversion, that system will get 1 or better 0x00000001. But WITHOUT conversion... we get hughe number....
_________________
Juul Vanparijs
Senior Developer
Cressida Technology Ltd
Back to top
View user's profile Send private message Visit poster's website
fjb_saper
PostPosted: Thu Oct 25, 2007 2:58 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

JuulV wrote:
@fjb_saper: not quite correct what you're saying... Version is an MQLONG (so a 32-bit signed integer), thus 16777216 is 0x01000000. This is exactly the value that a BIG-ENDIAN machine uses to store the decimal value 1. If this data is sent to LITTLE-ENDIAN system WITH conversion, that system will get 1 or better 0x00000001. But WITHOUT conversion... we get hughe number....


Sorry for your math but it should be dec 16 in that case....

What you mean to say is that it does more than just reversing the byte order it also changes the order of the bits inside the byte?

So 0x 0100 0000 does not become 0x 0000 0100 (256 dec) but 0x 0000 0010 (16 dec) ? Still makes no sense unless you use binary instead of hex which would give you 2 dec.
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
EddieA
PostPosted: Thu Oct 25, 2007 10:17 am    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

fjb_saper wrote:
Sorry for your math but it should be dec 16 in that case....

What you mean to say is that it does more than just reversing the byte order it also changes the order of the bits inside the byte?

So 0x 0100 0000 does not become 0x 0000 0100 (256 dec) but 0x 0000 0010 (16 dec) ? Still makes no sense unless you use binary instead of hex which would give you 2 dec.

JuuLv is correct. The "flip" is byte oriented.

Consider the 4 bytes as "abcd". When "converted", it becomes dcba. So, 12345678 would become 78563412.

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Thu Oct 25, 2007 10:22 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Right, so '01" stays '01'. It doesn't become '10'.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu Oct 25, 2007 2:04 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

jefflowrey wrote:
Right, so '01" stays '01'. It doesn't become '10'.


got it.
Thanks all for setting me straight...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
bruce2359
PostPosted: Fri Oct 26, 2007 6:34 am    Post subject: Reply with quote

Guest




What Version did the programmer specify when he/she built the MQMD? Did he/she put a actual numeric value in the field? Or use the MQMD_VERSION_1 type of specification.

The MD is (should be) converted based on CCSIDs as part of the message flow.
Back to top
JuulV
PostPosted: Fri Oct 26, 2007 3:00 pm    Post subject: Reply with quote

Apprentice

Joined: 05 Sep 2007
Posts: 28
Location: Belgium

Sorry if I have to set some things straight again...
Numeric fields are converted based on ENCODING; only character fields are converted using CCSID (and as far as I know byte fields, E.g. MessageId, are never converted, but please correct me if I'm wrong here).
And... data conversion is never "fully automatic": it happens either
"pseudo automatically" via definition (E.g. define channels with CONVERT(YES) attribute), or
programmatically (E.g. via channel or data conversion exits)
_________________
Juul Vanparijs
Senior Developer
Cressida Technology Ltd
Back to top
View user's profile Send private message Visit poster's website
PeterPotkay
PostPosted: Fri Oct 26, 2007 4:00 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

JuulV wrote:
(and as far as I know byte fields, E.g. MessageId, are never converted, but please correct me if I'm wrong here).

You are correct.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
bruce2359
PostPosted: Sat Oct 27, 2007 8:45 am    Post subject: Reply with quote

Guest




The original post was about an invalid MD Version. Version is an MQLONG field. MQLONG is supported on all platforms, and will not need conversion. If the programmer stuffs an invalid Version number in the Version field of the MD, it will be invalid at the receiving program.

Quote:
And... data conversion is never "fully automatic": it happens either
"pseudo automatically" via definition (E.g. define channels with CONVERT(YES) attribute), or programmatically (E.g. via channel or data conversion exits)


Data conversion is about conversion of the application payload in the message, CONVERT(YES) or MQGMO_CONVERT. The qmgr converts the MD.

From the MQ APG:
When necessary, MCAs convert the message descriptor and header data into the required character set and encoding. Either end of the link (that is, the local MCA or the remote MCA) can do the conversion.
Back to top
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » Message Version is not supported
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.