Event-Driven: Kafka, RabbitMQ, Outbox – wann sinnvoll.
Event-Driven Architecture: Kafka, RabbitMQ, Outbox – wann macht das Sinn?
Event-Driven ist kein Selbstzweck. Es löst spezifische Probleme – und schafft neue.
Wann Event-Driven sinnvoll ist
Wenn Systeme lose gekoppelt werden sollen: Der Publisher einer Bestellung weiß nicht, wer sonst noch auf diese Bestellung reagiert. Der Lagerservice, der Versandservice, der Analytics-Service – alle subscriben auf das Bestell-Event, ohne dass der Order-Service sie kennt.
Wenn Spitzen abgefedert werden sollen: Eine Queue zwischen zwei Systemen puffert Last. Das Downstream-System verarbeitet in seinem eigenen Tempo.
Wenn Ausfalltoleranz gefragt ist: Wenn das empfangende System kurz nicht verfügbar ist, liegen Nachrichten in der Queue und werden verarbeitet, wenn es wieder hochkommt.
Kafka vs. RabbitMQ
Kafka: Hochdurchsatz, persistente Log-basierte Architektur, Nachrichten bleiben lange verfügbar (für Replay). Gut für Event Streaming, Audit Logs, hohe Volumina. Operativer Aufwand höher.
RabbitMQ: Klassischer Message Broker, einfacher zu betreiben, gut für Task Queues und Work Distribution. Nachrichten werden nach Verarbeitung gelöscht.
Für die meisten mittelgroßen Projekte: RabbitMQ reicht. Kafka, wenn wirklich hohe Volumina oder Event-Replay gebraucht werden.
Das Outbox Pattern
Problem: Datenbank-Update und Queue-Message in einer atomaren Transaktion. Wenn die Message nach dem DB-Update verloren geht, ist der Zustand inkonsistent.
Lösung: Outbox-Tabelle in der Datenbank. Update und Outbox-Eintrag in derselben Transaktion. Ein separater Prozess liest die Outbox und schreibt in die Queue. Atomizität garantiert.
Checkliste Event-Driven
Event-Driven-Anwendungsfall klar identifiziert
Broker-Technologie (Kafka/RabbitMQ/SQS) passend gewählt
Outbox Pattern für kritische Events implementiert
Idempotente Consumer-Implementierung
Dead Letter Queue für nicht-verarbeitbare Nachrichten
Monitoring für Queue-Tiefe und Consumer-Lag
Event-Driven-Architektur für euer Projekt?
markom.digital entwirft und implementiert event-driven Integrationen – von der Architektur bis zur Produktionsumgebung.