3.3.2 Sequence of Events

The following diagram shows the sequence of events for reliable messaging with TCP as the transport.

Reliable messaging with TCP as transport

Figure 18: Reliable messaging with TCP as transport

  1. The RM Source (RMS) sends a CreateSequence message, as specified in [WSRM1-1] section 3.4, to the RM Destination (RMD).

  2. The RMD sends a CreateSequenceResponse message, as specified in [WSRM1-1] section 3.4, to the RMS.

  3. 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>
    
  4. 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>
      
    
  5. 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>
      
    
  6. 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>
      
    
  7. 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>
      
    
  8. 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>
      
    
  9. 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>