3.3.2 Sequence of Events
The following diagram shows the sequence of events for reliable messaging with TCP as the transport.
Figure 18: Reliable messaging with TCP as transport
The RM Source (RMS) sends a CreateSequence message, as specified in [WSRM1-1] section 3.4, to the RM Destination (RMD).
The RMD sends a CreateSequenceResponse message, as specified in [WSRM1-1] section 3.4, to the RMS.
The RMS sends the first message to the RMD with MessageNumber = 1 and an <AckRequested> element header block in the header to signal to the RMD that the RMS is requesting a <SequenceAcknowledgement> element to be returned, as specified in [WSRM1-1] section 3.3.
<r:AckRequested> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> </r:AckRequested> <r:Sequence s:mustUnderstand="1"> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:MessageNumber>1</r:MessageNumber> </r:Sequence>
The RMD responds with acknowledgement range = 1, 1 in a <SequenceAcknowledgement> element header block, as specified in [WSRM1-1] section 3.2.
<r:SequenceAcknowledgement> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:AcknowledgementRange Lower="1" Upper="1"/> </r:SequenceAcknowledgement>
The RMS sends a second message to the RMD with MessageNumber = 2 and an <AckRequested> element header block in the header to signal to the RMD that the RMS is requesting that a <SequenceAcknowledgement> element be returned, as specified in [WSRM1-1] section 3.3.
<r:AckRequested> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> </r:AckRequested> <r:Sequence s:mustUnderstand="1"> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:MessageNumber>2</r:MessageNumber> </r:Sequence>
The RMD responds with acknowledgement range = 1, 2 in <SequenceAcknowledgement> element header block, as specified in [WSRM1-1] section 3.2.
<r:SequenceAcknowledgement> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:AcknowledgementRange Lower="1" Upper="2"/> </r:SequenceAcknowledgement>
The RMS sends the last message to RMD with MessageNumber = 3 and an <AckRequested> element header block in the header to signal to the RMD that the RMS is requesting that a <SequenceAcknowledgement> element be returned, as in [WSRM1-1] section 3.3. It adds a <LastMessage> element in the sequence block to indicate to the RMD that this message is the last message in the sequence.
<s:Envelope> <s:Header> <!-- ... --> <r:Sequence s:mustUnderstand="1"> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:MessageNumber>3</r:MessageNumber> <r:LastMessage /> </r:Sequence> <a:Action s:mustUnderstand="1"> http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage </a:Action> <a:To s:mustUnderstand="1"> net.tcp://10.185.189.61:9000/servicemodelsamples/service </a:To> </s:Header> <s:Body /> </s:Envelope>
The RMD responds with an acknowledgement range = 1, 3 in the <SequenceAcknowledgement> element header block, as specified in [WSRM1-1] section 3.2.
<r:SequenceAcknowledgement> <r:Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</r:Identifier> <r:AcknowledgementRange Lower="1" Upper="3"/> </r:SequenceAcknowledgement>
After receiving acknowledgement of the last message, RMS sends a <TerminateSequence> element, as specified in [WSRM1-1] section 3.5.
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> <s:Header> <a:Action s:mustUnderstand="1"> http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence </a:Action> <a:To s:mustUnderstand="1"> net.tcp://10.185.189.61:9000/servicemodelsamples/service </a:To> </s:Header> <s:Body> <TerminateSequence xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm"> <Identifier>urn:uuid:cd8ea5a2-4867-45ed-bb39-46c4cab2213f</Identifier> </TerminateSequence> </s:Body> </s:Envelope>