Most message properties are mapped directly between service
integration and WebSphere® MQ.
However some message properties and reliability levels have no exact
equivalent. When you pass messages between service integration and WebSphere MQ, these properties
are either mapped to their nearest equivalent or preserved in the
RFH2 header for the message.
Mapping the additional service integration
message properties to MQRFH2 header fields
The following
message fields, specific to the service integration bus, hold extra
information not used in WebSphere MQ.
To preserve these fields when a message is sent to WebSphere MQ, their values are added to
the MQRFH2 header of application messages in a /sib folder.
Table 1. Mapping SIBusMessage fields or properties to MQRFH2 header fields
MQRFH2 header field |
Equivalent SIBusMessage field or property |
Description |
JsApiUserId |
Application user identifier (JMSXUserId). |
The service integration application user identifier. |
JsDst |
JMS destination. |
The service integration JMS destination to which
the message was sent. |
JsFmt |
Message format. |
The service integration message format. |
JsSysMsgId |
System message identifier. |
The service integration system message identifier
assigned to the message. |
Note: When a message is sent to WebSphere MQ, a
/sib folder
is included in the MQRFH2 header of the message if both of the following
are true:
- The WebSphere MQ queue
point attributes of the service integration destination are configured
to use RFH2 headers.
- The fields that correspond to the /sib folder
content are set in the service integration message.
Mapping the JMS Destination property
between service integration and WebSphere MQ
Service
integration destinations and WebSphere MQ
destinations are fundamentally different and there is no direct way
to map between the two representations of the JMS destination property.
To address this, when a message leaves service integration and enters WebSphere MQ, an additional RFH2 property
is introduced into the RFH2 header to store the service integration
destination property.
The service integration destination property
is serialized, formatted as a hexadecimal string, then stored using
the JsDst property of the service integration
RFH2 folder.
For example: A service integration destination
SIQ1 is
localized on a WebSphere MQ
queue
MQQ1, residing on queue manager
QM1.
The following actions occur when a service integration application
sends a message to
SIQ1:
- A serialized representation of PMQ1 is placed
in the /sib folder of the RFH2 header, using the JsDst property.
- The message is stored on MQQ1.
- The string "queue://QM1/MQQ1" is also placed
in the/jms folder of the RFH2 header using the Dst property.
This follows the convention used by the WebSphere MQ messaging provider to encode
JMS destinations. If the message is retrieved by a service integration
application, the JMS destination can be recovered from the
/sib folder
of the RFH2 header. If the message is retrieved by a WebSphere MQ application, the JMS destination
can be recovered from the contents of the
/jms folder
of the RFH2 header.
Note: If a WebSphere MQ server bus member is configured
so that it does not use RFH2 headers, the JMS destination is not preserved
when the message enters WebSphere MQ.
In this situation, a service integration application can still retrieve
the JMS message, but any attempt to examine the JMS destination property
causes a JMS exception.
Mapping the message reliability
between service integration and WebSphere MQ
The
order in which message reliability mappings are applied is significant,
and there are several locations where message reliability can be set,
overridden or mapped.
For messages being sent to a service integration
destination that is localized on a WebSphere MQ
server bus member, the following mappings apply in the order given:
- The message reliability can be set when the message is created.
- The message reliability can be mapped to a different level of
reliability when it is sent to a destination. The settings that determine
this mapping are a property of the service integration destination.
- If the message is sent to a destination that is assigned to a WebSphere MQ queue, the reliability
is subject to the reliability mapping performed on all messages sent
to WebSphere MQ. This
process maps reliable persistent, or higher levels of reliability,
to WebSphere MQ persistent
reliability. All other levels of service integration reliability are
mapped to WebSphere MQ
nonpersistent reliability.
For messages being received by service integration destinations
that are localized on a WebSphere MQ
server bus member, the following mapping applies:
- If a message is received from WebSphere MQ,
then its WebSphere MQ
persistence is mapped to a service integration reliability using the
mappings defined as part of the WebSphere MQ
server bus member from which the message is being retrieved.