Reassembly of segments

Each physical message that is a segment has a unique message descriptor. For segments that comprise a single logical message, most of the fields in the message descriptor are the same for all segments in the logical message. Usually, it is only the MsgId, Offset, and MsgFlags fields that differ between segments in the logical message. However, when segments take different paths through the network, and some of those paths have MCA sender conversion enabled, it is possible for the CodedCharSetId and Encoding fields to differ between segments when the segments eventually arrive at the target queue.

A logical message consisting of segments in which the CodedCharSetId and/or Encoding fields differ cannot be reassembled by the queue manager into a single logical message. Instead, the queue manager reassembles and returns the first few consecutive segments at the start of the logical message having the same character-set identifiers and encodings, and the MQGET call completes with completion code MQCC_WARNING and reason code MQRC_INCONSISTENT_CCSIDS or MQRC_INCONSISTENT_ENCODINGS, as appropriate.

When the queue manager reassembles a logical message, the message descriptor is returned with the values from the message descriptor for the first segment; the only exception is the MsgFlags field, which the queue manager sets to indicate that the reassembled message is the only segment.