CQRS: Ereignisse speichern und veröffentlichen - wie gehe ich sicher vor?

Wie ich gelernt habeWarum veröffentlicht das CQRS-Repository Ereignisse, nicht den Ereignisspeicher? Es ist die Aufgabe des CQRS-Repository, Ereignisse zu veröffentlichen. So weit, ist es gut.

Das Speichern und Veröffentlichen der Ereignisse sollte natürlich in einer einzigen Transaktion erfolgen. Technisch bedeutet dies, einen (oder mehrere) Datensätze in den Speicher zu schreiben und ein (oder mehrere) Ereignisse auf einem Nachrichtenbus zu veröffentlichen. Daher reicht eine einfache Datenbanktransaktion nicht aus, sie sollte verteilt sein.

Leider unterstützen viele NoSQL-Datenbanken (wie MongoDB) keine ACID-kompatiblen Transaktionen, auch nicht, um über die Möglichkeit einer verteilten Transaktion zu sprechen. Darüber hinaus gibt es Nachrichtenwarteschlangen, die auch verteilte Transaktionen nicht unterstützen.

Die Frage ist also: Wie gehe ich damit um?

Gibt es ein empfohlenes Muster?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage