Queue manager data conversion
Queue manager data conversion has always been available to non-JMS applications receiving messages from JMS clients. Since V7.0, JMS clients receiving messages also use queue manager data conversion. From 7.0.1.5, or 7.0.1.4 with APAR IC72897, queue manager data conversion is optional.
The queue manager can convert character and numeric data in message
data using the values of CodedCharacterSetId
, Encoding
,
and Format
set for the message data. For non-JMS
applications the conversion capability has always been available by
setting the GetMessageOption, GMO_CONVERT
.
The queue manager conversion capability has not been available to
a JMS application receiving a message until V7.0.
You can use queue manager conversion, before V7.0, with a JMS client
application that sends a message. The JMS client builds a formatted
record, sets the CodedCharacterSetId
, Encoding
,
and Format
attributes corresponding to the data placed
in the message. A non-JMS receiving application reads the message
using GMO_CONVERT
, and causes a user-written data
conversion exit to be called. The data conversion exit is a shared
library that has the name set in the Format
field.
Since V7.0, the queue manager is able to convert messages that
are sent to JMS clients. From 7.0.0.0 to 7.0.1.4 inclusive, queue
manager conversion is always called for JMS clients. From 7.0.1.5,
or from 7.0.1.4 with APAR IC72897 applied, queue manager conversion
is controlled by setting the destination property, WMQ_RECEIVE_CONVERSION,
to WMQ_RECEIVE_CONVERSION_QMGR
, or WMQ_RECEIVE_CONVERSION_CLIENT_MSG
. WMQ_RECEIVE_CONVERSION_CLIENT_MSG
is
the default setting, matching the behavior of WebSphere® MQ V6.0, which did not support
queue manager data conversion for JMS clients. The application can
change the destination setting:
Queue manager data conversion for a JMS client takes place when the client calls a consumer.receive method. Text data is transformed into UTF-8 (1208) by default. Subsequent read and get methods decode text in the received data from UTF-8, creating Java text primitives in their internal Unicode encoding. UTF-8 is not the only target character set from queue manager data conversion. You can choose a different CCSID by setting the WMQ_RECEIVE_CCSID destination property.
The reason for changing WMQ_RECEIVE_CCSID is specialized; the chosen CCSID makes no difference to the text objects created in the JVM. However, some JVMs, on some platforms, might not be able to handle conversion from the CCSID of text in the message into Unicode. The option gives you a choice of CCSID for any text delivered to the client in the message. Some JMS client platforms have had problems with message text being delivered in UTF-8.
The JMS code is equivalent to the bold text in the C code in Figure 3,
Queue manager conversion is only performed on the message
data that has a known WebSphere MQ
format. MQSTR
, or MQCIH
are examples
of known formats that are predefined. A known format can also be user-defined
format, as long as you have supplied a data-conversion exit.
Messages
constructed as JMSTextMessage, JMSMapMessage and JMSStreamMessage,
have a MQSTR
format, and can be converted by the
queue manager.