Zum Inhalt springen

Transactional Outbox

Eine Outbox speichert eine fachliche Änderung und den ausgehenden Ereigniseintrag gemeinsam. Ein separater Prozess übermittelt die Nachricht später.

API und Datenverträge

Eine Transactional Outbox verbindet eine fachliche Datenbankänderung mit dem dauerhaften Eintrag einer ausgehenden Nachricht in derselben lokalen Transaktion. Ein separater Relay-Prozess liest diese Einträge und veröffentlicht sie beim Nachrichtenbroker. Damit entfällt die Lücke zwischen erfolgreichem Datenbank-Commit und einem anschließend unterbliebenen Sendeversuch.

Im fiktiven Beispiel wechselt das Supportticket S-27 auf den Status „geschlossen“. Der Dienst speichert den neuen Status und das Ereignis E-27 zusammen. Scheitert die Transaktion, wird beides zurückgerollt. Gelingt der Commit und stürzt der Dienst danach ab, bleibt der Ereigniseintrag für die spätere Übermittlung erhalten.

Veröffentlichung und Verarbeitung bleiben getrennt

Veröffentlicht der Relay-Prozess E-27 und fällt vor dem Speichern des Sendeerfolgs aus, kann er die Nachricht erneut senden. Der Empfänger muss wiederholte Zustellungen sicher verarbeiten, etwa mit einer Transactional Inbox. Die Outbox allein garantiert keine genau einmalige Wirkung über Datenbank, Broker und Empfänger hinweg.

Legen Sie fest, wie ausstehende Einträge gefunden, Fehler sichtbar gemacht und gegebenenfalls Ereignisse je Ticket in Reihenfolge veröffentlicht werden. Auch Bereinigung und Wiederanlauf benötigen Regeln. CDC kann eine technische Grundlage für den Relay-Prozess liefern; das Erfassen beliebiger Zeilenänderungen definiert jedoch noch kein fachliches Ereignis.

Quellen