Retry-Handling in SAP CPI mittels JMS-Adapter: Teil 1
Das Zielsystem war für einen kurzen Augenblick nicht erreichbar, wodurch das System eine Nachricht nicht übermitteln konnte? Dieses Problem lösen Viele damit, dass sie die Nachricht manuell an die SAP CPI schicken. Jedoch können Sie diesen Mehraufwand mithilfe des Retry-Handlings leicht lösen. In diesem Blogbeitrag erfahren Sie Schritt für Schritt, wie Sie mithilfe des JMS-Adapters ein Retry-Prozess einbauen können.
Wie funktioniert der Retry-Mechanismus in der SAP CPI?
Durch den JMS-Adapter werden die Nachrichten temporär in der Message Queue der SAP CPI gespeichert. Die Nachrichten können von dort aus beliebig oft wiederholt werden. Dafür zählt ein eingebauter Header von SAP die Wiederholungen hoch, bis die gewünschte Anzahl an Retries erreicht wurde.
Ablegen der Nachricht in die Message Queue
Zur Einfachheit nutzen Sie in dem Integration Flow ein „Start Timer“ und ein „Content Modifier“, um die Nachricht des Senders darzustellen. Damit das System die Nachricht nun temporär in der Message Queue speichert, müssen Sie ein JMS-Adapter hinzufügen.
Bei der Konfiguration des Adapters müssen Sie auf den Namen der Queue achten. Dieser muss identisch mit dem später konfigurierten JMS-Adapter sein, der die Nachricht aus der Queue holt.
Entnehmen der Nachricht aus der Message Queue
Damit das System die Nachricht an den Empfänger übermitteln kann, muss die Message zuerst aus der Queue geholt werden. Dazu nutzen Sie den JMS-Adapter mit dem zuvor festgelegten „Queue Name“. In unserem Beispiel simulieren wir eine fehlerhafte Verbindung zu dem Endsystem mit einer falschen Adresse. Dadurch erscheint über den IDoc-Adapter ein gelbes Ausrufezeichen. Der „Exception Subprocess“ fängt die fehlerhafte Nachricht ab und ruft den lokalen Integrationsprozess „Call Retry Process“ auf.
In dieser zweitägigen Schulung erfahren Sie, wie die Zukunft von Integrationsszenarien im SAP Umfeld aussieht und wie Sie das dazugehörige Tool einsetzen können – die SAP Cloud Platform Integration bzw. die Nachfolgerin SAP Integration Suite. Erlernen Sie, wie Sie eigene Integrationsszenarien im Handumdrehen selbst entwickeln und im Nachgang überwachen können.
Der lokale „Retry Process“
Der lokale Integrationsprozess besteht aus zwei Routen. In der „EndOfRetry“-Route wird die Anzahl der Wiederholungen geprüft. Dabei endet der Prozess, wenn die gewünschten Wiederholungen erreicht wurden. Ist dies jedoch nicht der Fall, so durchläuft das System die Default Route („Retry“). Dadurch gelangt die Nachricht wieder zurück in die Message Queue und der JMS-Adapter entnimmt diese zum Wiederholen. Der Standard-Header „SAPJMSRetries“ erhöht sich während des Prozesses.
Der Prozess wiederholt sich so oft, bis die Bedingung ${header.SAPJMSRetries} > ‘1’ erfüllt ist.
Somit verfügt der Header nach der ersten Wiederholung über einen Wert von 1. Da die Bedingung aber immer noch nicht erfüllt ist, gibt es einen weiteren „Retry“. Nach der zweiten Wiederholung hat „SAPJMSRetries“ den Wert 2, weshalb die „EndOfRetry“-Route durchläuft und der Prozess endet.
Einstellung des Wiederholungsintervalls
Im JMS-Adapter können Sie unter dem Reiter „Connection“ das Wiederholungsintervall einstellen. Das Intervall ist die Anzahl der Minuten, die das System nach einer Wiederholung abwarten soll, bevor eine weitere beginnt. Mit Anhaken der Checkbox „Exponential Backoff“ verdoppeln Sie die Zeit zwischen jeder Wiederholung. Dies hat den Vorteil, dass das System bei längerer Ausfallzeit des Zielsystems nicht alle Nachrichten schnell hintereinander wiederholt.
Die nächsten Schritte
In unserem zweiten Teil erfahren Sie, wie Sie Retry Messages überwachen und im Fehlerfall eine Email an den IT-Support verschicken. Haben Sie Fragen oder Anmerkungen zur Einrichtung des Retry-Handlings mit JMS? Dann schreiben Sie uns gerne!