Was bedeutet Transactional Outbox?
Wird beispielsweise ein Auftrag freigegeben, wird gleichzeitig eine noch zu versendende Ereignisnachricht abgelegt. Ein gesonderter Dienst verschickt diese später. So bleibt nach erfolgreichem Speichern sichtbar, was noch veröffentlicht werden muss.
Beim Versand sind Wiederholungen möglich. Empfänger müssen deshalb doppelte Meldungen sicher behandeln. Das Muster schließt eine wichtige Lücke zwischen Speichern und Senden, garantiert allein aber keine einmalige Wirkung im fremden Zielsystem.
So sieht das in der Praxis aus
Beispiel: Die Auftragsfreigabe und das zu versendende Ereignis werden gemeinsam in der Datenbank gespeichert.
Häufige Fragen
Welches Problem löst eine Transactional Outbox?
Eine Datenänderung könnte gespeichert werden, während die dazugehörige Nachricht durch einen Ausfall verloren geht. Gemeinsames Speichern hält fest, welche Veröffentlichung noch aussteht.
Warum kann eine Nachricht trotzdem doppelt versendet werden?
Nach einem Absturz kann unklar sein, ob ein vorheriger Versand abgeschlossen war. Ein erneuter Versuch ist dann möglich, weshalb Empfänger Wiederholungen absichern müssen.
Was muss im Betrieb überwacht werden?
Offene Nachrichten, ihr Alter und fehlgeschlagene Versandversuche. Ein wachsender Bestand kann zeigen, dass Änderungen gespeichert sind, aber noch nicht bei anderen Systemen ankommen.
