WebSphere Message Broker unterstützt WS-RM (Web Services Reliable Messaging), das einen zuverlässigen Nachrichtenaustausch zwischen zwei Systemen ermöglicht.
Web Services Reliable Messaging (WS-RM) ist ein OASIS-Standard (OASIS = Organization for the Advancement of Structured Information Standards) für den zuverlässigen Austausch von SOAP-Nachrichten zwischen zwei Systemen. Der Zweck von WS-RM ist die Sicherstellung der Nachrichtenübermittlung in Situationen, in denen etwa der Zielendpunkt vorübergehend nicht verfügbar ist (z. B. bei einem Serverneustart) oder der Nachrichtenpfad über mehrere Transportverbindungen verläuft, von denen jede einzelne ausfallen kann (z. B. über eine Firewall). Bei Verwendung von HTTP-Transport erhöht WS-RM zwar die Zuverlässigkeit, wirkt sich aber nachteilig auf die Leistung aus.
WS-RM gilt nur für den HTTP-Transport. Wird WS-RM in einem Nachrichtenfluss konfiguriert, in dem der JMS-Transport verwendet wird, werden die WS-RM-Einstellungen bei der Implementierung des Nachrichtenflusses nicht verwendet.
Auf Systemen, auf denen WS-RM implementiert ist, werden Nachrichten, die nicht erfolgreich zugestellt und bestätigt werden konnten, erneut übertragen und es wird dafür gesorgt, dass keine doppelten Nachrichten an das Anwendungsziel übermittelt werden. WS-RM ist ein Web-Serviceprotokoll, das zusammen mit WS_Security und WS-Adressing verwendet werden kann.
Reliable Messaging findet zwischen zwei Endpunkten statt, der Reliable Messaging-Quelle und dem Reliable Messaging-Ziel. Bevor die Nachrichten gesendet werden, führen die zuverlässige Quelle und das zuverlässige Ziel einen Nachrichtenaustausch durch, um eine Sequenz aufzubauen. Eine Sequenz wird durch eine eindeutige Kennung identifiziert und besteht aus einer Folge von Nachrichten mit fortlaufender Nummerierung (ab 1 aufwärts). Durch das Senden einer Nachrichtengruppe in einer Sequenz wird die Zuverlässigkeit aller Nachrichten in der Sequenz gewährleistet.
Die Reliable Messaging-Quelle sendet jede Nachricht einmal oder mehrfach an das Reliable Messaging-Ziel. Das Ziel sendet für jede empfangene Nachricht eine Bestätigung zurück, um mitzuteilen, dass die Nachricht erfolgreich empfangen wurde. Wenn die Reliable Messaging-Quelle keine Bestätigung vom Ziel erhält, dass eine Nachricht empfangen wurde, sendet sie die Nachricht so lange erneut, bis sie eine Bestätigung erhält.
Wenn alle Nachrichten einer Sequenz erfolgreich vom Ziel empfangen wurden und die Quelle eine Bestätigung erhalten hat, sendet die Quelle eine TerminateSequence-Nachricht, um dem Ziel mitzuteilen, dass die Nachrichtensequenz beendet ist.
Wartet der Client auf Nachrichten, die nicht übermittelt wurden, kann er eine WS-MakeConnection-Anforderung auslösen. WS-MakeConnection ist eine Spezifikation zur Beschreibung des Nachrichtenaustauschs zwischen einem Server und einem Client unter Verwendung eines transportspezifischen Rückkanals. Bei einer MakeConnection-Anforderung durch den Client kann der Server mit Nachrichten aus der Warteschlange antworten, die der Client noch nicht empfangen hat.
Die Verwendung der HTTP-Komprimierung oder von SSL zusammen mit WS-RM wird von WebSphere Message Broker nicht unterstützt.
WS-RM gibt an, wie viele Zustellungszusicherungen vom Provider unterstützt werden sollen. Mit der Zusicherung 'InOrder' (der Reihenfolge nach) wird sichergestellt, dass Nachrichten vom RM-Ziel dem Anwendungsziel in derselben Reihenfolge zugestellt werden, in der sie gesendet wurden, unter Berücksichtigung ihrer Sequenznummern. Erhält das RM-Ziel beispielsweise Nachrichten in der Reihenfolge 'm1', 'm3', 'm2', wird zunächst m1 zugestellt. Anschließend wird m3 bis zum Empfang von m2 zurückbehalten und dann werden m2 und m3 an das Anwendungsziel übermittelt. Nachrichten bleiben nicht über einen Neustart des Brokers hinaus erhalten.
Das folgende Diagramm zeigt ein Beispielszenario, in dem 'InOrder' nicht verwendet wird und Nachrichten nicht in der Reihenfolge zugestellt werden müssen, in der sie gesendet wurden. Die zweite Nachricht in der Folge geht verloren, aber die dritte Nachricht wird verarbeitet, obwohl die zweite Nachricht nicht zugestellt wurde.
Im folgenden Szenario ist die Option aktiviert und Nachrichten müssen in der Reihenfolge zugestellt werden, in der sie gesendet werden. Die zweite Nachricht in der Folge geht verloren, was dazu führt, dass die dritte Nachricht erst verarbeitet wird, nachdem die zweite Nachricht (msg2) zugestellt werden konnte.
Die Zusicherung 'InOrder' betrifft nur die Verarbeitung der eingehenden Nachrichten, wenn beispielsweise der Richtliniensatz, der eine InOrder-Zustellung verlangt, einem SOAPInput-Knoten oder einem eingehenden Nachrichtenfluss zugeordnet ist. Wenn die Zusicherung 'InOrder' für die Verarbeitung eingehender SOAP-Nachrichten aktiviert ist, werden die Nachrichten von dem Fluss entsprechend der ihnen von der RM-Quelle zugewiesenen Nachrichtennummer verarbeitet.
Die Zusicherung 'InOrder' bezieht sich nicht auf die Verarbeitung abgehender Nachrichten. Wird die Zusicherung 'InOrder' für die Verarbeitung abgehender SOAP-Nachrichten ausgewählt, beispielsweise im Zusammenhang mit einem SOAPRequest-Knoten, werden die Nachrichten dem Anwendungsziel nicht zwangsläufig in der Reihenfolge zugestellt, in der sie vom Nachrichtenfluss gesendet werden.
Informationen zur Skalierbarkeit bei Verwendung von InOrder mit WS-RM finden Sie im Abschnitt Skalierbarkeit und Leistung der SOAP-Verarbeitung optimieren.