
Der Adapter ist Teil der LUW des Adapter-Framework Messaging-Service. Dadurch entsteht folgendes Problem: Das externe Adapterprotokoll verwendet seine eigene lokale Transaktion, die von der Adapter-Framework Datenbanktransaktion entkoppelt ist.
Dieses Problem kann nur mit einer echten two-phase Commit globalen Transaktion gelöst werden, die zurzeit nicht zur Verfügung steht.
Stattdessen wird der MessageIDMapper verwendet. Zusätzlich zum ID-Mapping von XI-Message-Protokoll zum externen Protokoll wird ein Pending-Status für die gerade bearbeitete XI-Message in einer eigenen Transaktion persistiert.
Die Verarbeitungsreihenfolge sollte folgende Schritte enthalten:
Ist sie vorhanden, ist die XI-Message bereits erfolgreich bearbeitet. Der Adapter kehrt ohne Fehler zurück. Das Adapter-Framework kann die Message als erfolgreich versendet kennzeichnen.
Ist sie gespeichert, schreiben Sie eine ausführliche Error-Message in das Adapter-Framework Audit-Log und werfen Sie eine Exception.
In diesem Fall ist unklar, ob die XI-Message bereits an das externe System geschickt wurde oder nicht. Der Administrator muss prüfen, ob die Message schon im externen System verbucht ist.
Abhängig von dieser Prüfung sollte es möglich sein, den Kommunikationskanal entsprechend umzukonfigurieren, dass beim nächsten Sendeversuch der Message diese entweder verarbeitet wird oder aber als Duplikat ignoriert wird.
Ein Beispiel für eine möglichen Adapterkonfiguration finden Sie unter: JMS-Empfänger-Adapter konfigurieren , dort unter XI-Einstellungen definieren, Behandlung hängenden Messages
Der Parameter transactional in der Methode createIDMap() muss die Ausprägung false haben.
Der Parameter transactional in der Methode remove() muss die Ausprägung false haben.