Master 2

Outbox Saga

Modernes Maven-Multi-Module-Enterprise-Projekt mit Markdown, HTML, PDF und Pattern-Dokumentation.

Outbox und Saga Deep Dive

Outbox Saga Flow

Problem

Ein Bestellservice soll eine Bestellung speichern und ein Event publizieren. Wenn erst die Datenbank schreibt und danach Kafka fehlschlaegt, entsteht ein inkonsistenter Zustand. Wenn erst Kafka publiziert und danach die Datenbank fehlschlaegt, entsteht ebenfalls Inkonsistenz.

Loesung: Transactional Outbox

Die Fachtransaktion schreibt Bestellung und Outbox-Datensatz gemeinsam. Ein Relay publiziert spaeter zuverlaessig.

// PATTERN: Transactional Outbox
orders.save(order);
order.domainEvents().forEach(outbox::append);

Saga

Eine Saga koordiniert laengere Prozesse wie Zahlung, Reservierung, Versand. Jeder Schritt hat Kompensationen oder klare Fehlerzustaende.

Wann sinnvoll?

  • Payment und Fulfillment sind getrennte Systeme.
  • Messaging ist asynchron.
  • Kein globales XA ueber alle Systeme gewuenscht.
  • Retries und Idempotenz sind Pflicht.

Stand 2026-07-07. Relative Links und Codebloeke geprueft.

⌂ Cockpit