Ich versuche mich gerade in das Konzept hinter Event Sourcing/CQRS einzuarbeiten. Auch wenn ich die Vorteile sehr schätze, komme ich doch an einem Punkt nicht weiter:
Ich habe ein Programm, welches Geld zwischen verschiedenen Konten umbuchen soll.
1. Die Umbuchung soll nur stattfinden, wenn genug Geld auf dem Absenderkonto ist.
2. Was passiert, wenn ich eine Umbuchung auf Grundlage eines veralteten Read-Models starte? Eines der beteiligten Konten könnte ja zwischendrin gelöscht worden sein.
Das Umbuchen wird über ein Kommando an den CQRS Broker gestartet. Aggregates können sich bei dem Broker registrieren, um neue Kommandos zu empfangen. Der Broker sendet dann einfach das Umbuchen-Kommando an alle Abonnenten. Was passiert, wenn das Aggregate nicht mehr existiert, oder sich gar nicht registriert hat? Für die Umbuchung müssen alle beteiligten Aggregates das Kommando ausführen. Soll der Broker per Timeout warten, bis er alle Events (EinzahlungAbgeschlossen und AuszahlungAbgeschlossen) erhält? Das erscheint mir irgendwie nicht sinnvoll.
Gruß,
Delta