Show TOC

Ensuring Exactly Once in the SOAP Sender AdapterLocate this document in the navigation structure

Use

The SOAP adapter ensures exactly once end-to-end processing in different ways, depending on whether the SOAP message provided by the SOAP client contains a GUID or not.

Procedure

SOAP Message with GUID

If the SOAP message contains a GUID, select Use Encoded Headers and Use Query String in the adapter configuration.

The GUID can be provided in a valid XI message header in the SOAP message header or specified in a corresponding query string in the URL.

For example: http://< host name>:<port name>/XISOAPAdapter/MessageServlet?senderParty=<name of the sender party>&senderService=<name of the sender service>&interface=<name of the interface>&receiverParty=<name of the receiver party>&receiverService=<name of the receiver service>&interfaceNamespace=<name of the interface namespace>&MessageId=<GUID>

Note

SOAP Message Without GUID

If the SOAP message does not contain a GUID, the SOAP adapter generates one.

...

In the adapter configuration, select Exactly Once under Quality of Service.

The GUID is generated and the adapter calls the XI service exactly once.

Result

SOAP Message with GUID

  • If the SOAP client receives an empty SOAP message in HTTP 200 as a response, this means that the message has been successfully persisted and will be processed exactly once.
  • If the SOAP client receives a SOAP fault or any response not in HTTP 200, it must resend the message until it receives an empty SOAP message in HTTP 200.

SOAP Message Without GUID

  • If the XI message is successfully persisted, the adapter sends an empty SOAP message (HTTP 200) to the SOAP client as a response. The SOAP client now knows that the message has been sent successfully.
  • If the SOAP client receives a SOAP fault, it must resend the message until it receives an empty SOAP message (HTTP 200).
  • If the SOAP client receives an incomplete HTTP 200, the client can assume that the message has been processed successfully.
  • If the SOAP client receives an incomplete HTTP 4xx or 5xx, the client can assume that the message has not been processed.
  • If the SOAP client does not receive a response, the situation is uncertain. In this case, the message should be sent again. However, this can mean that the message is executed more than once.