3.1.7.11 Construction of a UserMessage Packet

The Queue Manager MUST generate a Construct a UserMessage Packet ([MS-MQDMPR] section 3.1.7.1.30) event with the following argument:

  • iMessage: the Message ([MS-MQDMPR] section 3.1.1.12) ADM element instance that is being processed.

The Queue Manager MUST perform further processing of the returned UserMessage Packet structure as follows.

If more than 75 percent of the time on the Session Ack Send Timer (section 3.1.2.5) has elapsed and the UnackedReceivedMsgCount ADM element does not equal 0x0000, the following processing steps MUST be performed:

  • A SessionHeader ([MS-MQMQ] section 2.2.20.4) MUST be included in the UserMessage Packet structure and MUST be populated as follows:

    • The SessionHeader.AckSequenceNumber field MUST be set to the MessageReceivedCount ADM element.

    • The SessionHeader.RecoverableMsgAckSeqNumber field MUST be set to the lowest unacknowledged recoverable message sequence number that has been persisted for reliable recovery.

    • The SessionHeader.UserMsgSequenceNumber field MUST be set to the MessageSentCount ADM element.

    • The SessionHeader.RecoverableMsgSeqNumber field MUST be set to the RecoverableMessageSentCount ADM element.

    • The SessionHeader.RecoverableMsgAckFlags field MUST be set to the RecoverableMsgAckFlags ADM element.

    • The SessionHeader.WindowSize field MUST be set to the WindowSize ADM element.

  • The BaseHeader.Flags.SH bit field MUST be set.

  • The RecoverableMsgAckFlags ADM element MUST be set to 0x00000000.

  • The UnackedReceivedMsgCount ADM element MUST be set to 0x0000.

  • The LastAckedRecoverableMsgSeqNumber ADM element MUST be set to the RecoverableMessageReceivedCount ADM element.

  • The Session Ack Send Timer MUST be restarted.