Exactly Once im SOAP-Sender-Adapter
sicherstellen
Auf welche Weise der SOAP-Adapter eine Exactly-Once End-to-End-Verarbeitung sicherstellt, hängt davon ab, ob die SOAP-Message, die vom SOAP-Client bereitgestellt wird, einen GUID enthält oder nicht.
Enthält die SOAP-Message einen GUID, wählen Sie in der Adapterkonfiguration Kodierte Header verwenden und Query-String verwenden.
Der GUID kann in einen gültigen XI-Message-Header im SOAP-Message-Header bereitgestellt werden oder in einem entsprechenden Query-String in der URL angegeben sein.
Zum Beispiel:
http://<Host-Name>:<Port-Name>/XISOAPAdapter/MessageServlet?senderParty=<Name
des Senderpartners>&senderService=<Name des
Sender-Service>&interface=<Name des
Interface>&receiverParty=<Name des
Empfängerpartners>&receiverService=<Name des
Empfänger-Service>&interfaceNamespace=<Name des
Interface-Namensraums>&MessageId=<GUID>
Enthält die SOAP-Message keinen GUID, generiert der SOAP-Adapter einen GUID.
...
Wählen Sie in der Adapterkonfiguration unter Quality-of-Service Exactly Once.
Der GUID wird generiert und der macht einen Exactly Once-Aufruf an den XI-Service.
● Erhält der SOAP-Client als Antwort eine leere SOAP-Message in HTTP 200, bedeutet das, dass die Message erfolgreich persistiert worden ist und genau einmal verarbeitet wird.
● Erhält der SOAP-Client einen SOAP-Fault oder irgendeine Antwort nicht in HTTP 200, dann muss er die Message so lange noch einmal versenden, bis er eine leere SOAP-Message in HTTP 200 erhält.
● Wird die XI-Message erfolgreich persistiert, dann schickt der Adapter eine leere SOAP-Message (HTTP 200) als Antwort an den SOAP-Client. Der SOAP-Client weiß nun, dass die Message erfolgreich verschickt wurde.
● Erhält der SOAP-Client einen SOAP-Fault, dann muss er die Message so lange noch einmal versenden, bis er eine leere SOAP-Message (HTTP 200) erhält.
● Erhält der SOAP-Client einen unvollständigen HTTP 200, dann kann der Client annehmen, dass die Message erfolgreich verarbeitet wurde.
● Erhält der SOAP-Client einen unvollständigen HTTP 4xx oder 5xx, dann kann der Client annehmen, dass die Message nicht verarbeitet wurde.
● Erhält der SOAP-Client keine Antwort, dann ist die Situation unbestimmt. Die Message sollte noch einmal verschickt werden. In diesem Fall ist aber potenziell die Message mehr als einmal ausgeführt.