
Bei der Verwendung von Web-Services in unternehmenskritischen Anwendungen ist ein zuverlässiger Message-Austausch unbedingte Voraussetzung. Der Standard Web Services Reliable Messaging (WSRM) gewährleistet, dass der Message-Austausch korrekt abgeschlossen wird, ohne dass Messages verloren gehen oder dupliziert werden. WSRM stellt einen zuverlässigen Message-Austausch auch dann sicher, wenn beispielsweise bei einer Bestellung die Verbindung zum Netzwerk verloren geht.
Um die Übertragung von Messages zu garantieren und auch die korrekte Reihenfolge der eingehenden Messages zu kontrollieren, sieht das WS-RM-Protokoll vor, eine oder mehrere Messages zu Sequenzen zusammenzufassen.
Sequenzen erhalten eine eindeutige Identifikation. Messages innerhalb einer Sequenz werden fortlaufend durchnummeriert. Der WSRM-Sequenz-Header in der SOAP-Message identifiziert jeweils die Sequenz, zu der eine Message gehört.
Die WS-Reliable-Messaging-Implementierungen auf Sender- und Empfängerseite stellen sicher, dass Messages sicher übertragen werden. Voraussetzung dafür ist, dass eintreffende Messages vom Empfänger quittiert werden. Dazu definiert die Spezifikation das Format für ein Acknowledgement, das der Empfänger dem Sender zur Bestätigung zusendet. Der Sender wartet auf die Bestätigung und sendet die Message gegegebenenfalls so lange noch einmal, bis er die Bestätgung erhält.
Sequenzen werden von der Anwendung angelegt, geöffnet, geschlossen, aktiviert und terminiert (siehe: Programmieren mit Sequenzen).
Zur Vermeidung unnötiger Netzwerkkommunikation muss der Empfänger den Empfang nicht jeder Message einzeln quittieren, sondern kann in einem Acknowledgement ganze (nicht zwingend zusammenhängende) Bereiche quittieren - also zum Beispiel zurückmelden, dass die Messages 1, 3 und 5 korrekt eingegangen sind. Da die Messages 2 und 4 nicht bestätigt wurden, werden sie erneut gesendet. Die Sequenz wird erst dann beendet, wenn der erfolgreiche Eingang auch dieser Messages zurückgemeldet wurde.
Die Message-Persistenz ist nicht an das WSRM-Protokoll geknüpft und muss von der WSRM-Implementierung übernommen werden.
Die WSRM-Implementierung von AS ABAP sieht vor, dass auf der Consumer-Seite entweder alle oder kein Aufruf einer Transaktion an den Provider gesendet werden. Auf der Provider-Seite wird jeder Aufruf in einer separaten Transaktion ausgeführt. Für jede einzelne Message wird ein COMMIT WORK abgesetzt.
Ein Fehler in einer Message bewirkt, dass die Verarbeitung der Sequenz abgebrochen wird. Im Fall eines Abbruchs oder Fehlers kann mit Hilfe des Sequenz-Monitors eine Sequenz beendet oder erneut gestartet werden. (Siehe Web Services Reliable Messaging).
Detaillierte Informationen zu WS-RM finden Sie im OASIS Standard zu Web Services Reliable Messaging Version 1.1: (
http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.pdf
).