2.2.20 UserMessage Packet

A UserMessage Packet always contains an entire message. The UserMessage Packet is used to communicate application-defined and administration acknowledgment messages between a sender and receiver.

 A UserMessage Packet contains a number of required headers and can contain additional optional headers. The required headers that MUST appear in all UserMessage Packets are: BaseHeader, UserHeader, and MessagePropertiesHeader. Optional headers include: TransactionHeader, SecurityHeader, DebugHeader, SoapHeader, MultiQueueFormatHeader, and SessionHeader.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

BaseHeader (16 bytes)

...

...

UserHeader (variable)

...

TransactionHeader (variable)

...

SecurityHeader (variable)

...

MessagePropertiesHeader (variable)

...

DebugHeader (variable)

...

SoapHeader (variable)

...

MultiQueueFormatHeader (variable)

...

SessionHeader (16 bytes, optional)

...

...

BaseHeader (16 bytes): A BaseHeader (section 2.2.19.1) packet that contains information to identify and manage protocol packets. The BaseHeader.Flags.IN field MUST NOT be set.

UserHeader (variable): A UserHeader (section 2.2.19.2) packet that contains source and destination queue information.

TransactionHeader (variable): A TransactionHeader (section 2.2.20.5) packet that contains flags and sequence information for the packet. This header MUST be present when UserHeader.Flags.TH is set and MUST NOT be present if it is clear.

SecurityHeader (variable): A SecurityHeader (section 2.2.20.6) packet that contains security information. This header MUST be present when UserHeader.Flags.SH is set and MUST NOT be present if it is clear.

MessagePropertiesHeader (variable): A MessagePropertiesHeader (section 2.2.19.3) packet that contains property information about a UserMessage Packet and the application-defined message payload. This header MUST be present.

DebugHeader (variable): A DebugHeader (section 2.2.20.8) packet that specifies the queue to receive trace messages for this UserMessage Packet. This header specifies the queue where trace messages are sent. This header MUST be present if and only if BaseHeader.Flags.DH is set.

SoapHeader (variable): A SoapHeader (section 2.2.20.7) packet that contains application-defined information. This header MUST be present if and only if UserHeader.Flags.HH is set.

MultiQueueFormatHeader (variable): A MultiQueueFormatHeader (section 2.2.20.1) packet that is included when a message is destined for multiple queues. This header MUST be present if and only if UserHeader.Flags.MQ is set.

SessionHeader (16 bytes): A SessionHeader (section 2.2.20.4) packet that is used to acknowledge express and recoverable UserMessage Packets received by the message transfer protocols. This header MUST be present if and only if BaseHeader.Flags.SH is set.