Transactional Outbox
Eine Outbox speichert eine fachliche Änderung und den ausgehenden Ereigniseintrag gemeinsam. Ein separater Prozess übermittelt die Nachricht später.
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
Verwandte Begriffe
- DatenbanktransaktionEine Datenbanktransaktion fasst Änderungen so zusammen, dass sie gemeinsam übernommen oder verworfen werden.
- Transactional InboxEine Transactional Inbox nutzt dauerhafte Nachrichteneinträge, um die lokale Verarbeitung gegen doppelte Zustellungen abzusichern.
- Change Data CaptureChange Data Capture erfasst Datenbankänderungen, damit andere Anwendungen sie weiterverarbeiten können.
- Server-Sent EventsServer-Sent Events übertragen über eine HTTP-Verbindung Textmeldungen vom Server zum Client, etwa zum Fortschritt eines Hintergrundauftrags.
- Entity TagEin ETag kennzeichnet eine bestimmte Darstellungsversion einer HTTP-Ressource und ermöglicht bedingte Abrufe oder Änderungen.
- Cross-Origin Resource SharingCORS steuert im Browser die Freigabe von Antworten über Origin-Grenzen. Es ersetzt weder die Anmeldung noch die Berechtigungsprüfung einer API.
Ihr Vorhaben mit ASES
Beschreiben Sie uns Ihr Vorhaben. Wir melden uns mit einer ersten Einschätzung.