Muster kaufvertrag boot

Aggregattyp: der Typ des Aggregatstamms, mit dem ein bestimmtes Ereignis verknüpft ist; Die Idee ist, dass sich exportierte Ereignisse auf ein Aggregat beziehen sollten (« ein Cluster von Domänenobjekten, der als eine einzelne Einheit behandelt werden kann »), wobei der Aggregatstamm den einzigen Einstiegspunkt für den Zugriff auf eine der Entitäten innerhalb des Aggregats bereitstellt. Dies kann z.B. « Bestellung » oder « Kunde » sein. Bevor wir mit einer Diskussion des Auswahlverfahrens für eine Strategie fortfahren, sollten wir beachten, dass das formale Strategiemuster zwar vorschreibt, dass die ausgewählte Strategie ein Feld des Kontexts ist, dies jedoch in der Praxis nicht immer der Fall ist. Stattdessen wird, wie im obigen Beispiel, die Strategie dem Context als Methodenargument zur Verfügung gestellt und sofort ausgeführt. Eine Alternative wäre gewesen, die Zahlungsmethodenstrategie als Feld zu speichern und zu einem späteren Zeitpunkt auszuführen, aber dies führt einige nuancierte Edge-Fälle ein, einschließlich der Überprüfung, ob die Strategie vor der Ausführung der Strategie festgelegt wurde (ist nicht null). Der Datensatz beschreibt ein Ereignis, das im Dienst aufgetreten ist, z. B. eine JSON-Struktur, die die Tatsache darstellt, dass eine neue Bestellung platziert wurde, die Daten über den Auftrag selbst, seine Auftragspositionen sowie kontextbezogene Informationen wie eine Anwendungsfallkennung umfasst. Durch die explizite Emission von Ereignissen über Datensätze in der Postausgangstabelle kann sichergestellt werden, dass Ereignisse für externe Verbraucher so strukturiert sind. Dies trägt auch dazu bei, dass Ereignisbenutzer nicht kaputt gehen, wenn z. B. das interne Domänenmodell oder die PurchaseOrder-Tabelle geändert wird.

Die bloße Erteilung dieser beiden Anfragen kann jedoch zu potenziellen Inkonsistenzen führen. Der Grund dafür ist, dass wir keine gemeinsame Transaktion haben können, die die Datenbank des Dienstes sowie Apache Kafka umfassen würde, da letztere nicht unterstützt, in verteilte (XA) Transaktionen eingetragen zu werden. Unter unglücklichen Umständen kann es also vorkommen, dass wir am Ende die neue Bestellung in der lokalen Datenbank verbleiben, aber nicht die entsprechende Nachricht an Kafka gesendet haben (z. B. aufgrund eines Netzwerkproblems). Oder umgekehrt haben wir die Nachricht an Kafka gesendet, aber die Bestellung in der lokalen Datenbank nicht beibehalten. Beide Situationen sind unerwünscht; Dies kann dazu führen, dass keine Lieferung für eine scheinbar erfolgreich aufgegebene Bestellung erstellt wird. Oder es wird eine Lieferung erstellt, aber dann gibt es keine Spur von der entsprechenden Bestellung im Bestellservice selbst.