3.1.1.7.3 Session with Transactional Messages Sent

The following sequence diagram demonstrates the sending of a transactional message between two queue managers with positive source journaling enabled after a session has been established.

Sequence for transactional messages

Figure 14: Sequence for transactional messages

The sender sends a transactional UserMessage Packet ([MS-MQMQ] section 2.2.20) to the receiver with positive source journaling enabled. The receiver responds by sending an OrderAck Packet (section 2.2.4). The purpose of the OrderAck Packet is to acknowledge that the transactional message was received in the correct order and was not a duplicate. The sender sends another transactional UserMessage Packet and the receiver acknowledges it with an OrderAck Packet response.

The receiver sends a SessionAck Packet (section 2.2.6) that contains a session acknowledgment of both UserMessage Packets. It is important to note that session acknowledgments and transactional acknowledgments are separate mechanisms that serve different purposes.

The receiver sends a FinalAck Packet (section 2.2.5) to the sender for each of the messages. A FinalAck Packet is sent when the message is consumed from the destination queue by a higher-layer application.

The sender sends a SessionAck Packet that contains a session acknowledgment of both FinalAck Packets.

After an inactivity time-out, the session is closed by either side by performing the steps listed in section 3.1.5.9. The protocol does not exchange packets as part of session closure.