2017-08-03 4 views
1

Ich versuche, Microservices für Bestell-/Transaktions-Prozess mit Event Sourcing-Konzept zu entwickeln. Die Mitarbeiter könnten eine Bestellung/Transaktion für einen Kunden per Telefon aufgeben. Das System zeichnet auch die Bestellnummer auf, die nach Kunden gruppiert ist. Es verwendet AWS Kinesis, um die Kunden-ID im Auftrag "OrderCreated" an den Service der Kundendaten zu senden, sodass wir die Nummer des erstellten Auftrags erhöhen können. Wir trennen die Auftragsabwicklung und Kunden basierend auf DDD-Konzept. Aber wir sollten menschliche Fehler erwarten, wenn die Mitarbeiter die falsche Kundennummer für die Bestellung auswählen. Also, es gibt eine Funktion, um den Kunden für verwandte Reihenfolge zu ändern.Ereignis Sourcing Choregraphy, die auf mehrere Datensätze beziehen

Das Problem ist das OrderUpdated-Ereignis enthält nur die neuesten Daten der Bestellung. Dies bedeutet, dass das Ereignis nur die neue Kunden-ID hat. Wir könnten die Anzahl der Bestellungen für neue Kunden erhöhen. Aber wir sollten die Bestellnummer für vorherige Kundennummer dekrementieren.

Wie löst man dieses Problem? Kannst du mir ein paar Vorschläge geben?

Vielen Dank im Voraus

+0

Wo wird die Kundenauftragszählung gespeichert? Wird es auch im Consumer gespeichert, der orderUpdated- und orderCreated-Ereignisse verwendet? –

+0

Die Anzahl der Kundenaufträge wird im Kundendaten-Snapshot gespeichert. Der Konsument verbraucht nur das Ereignis und bestimmt, ob der Kundenauftragszählwert inkrementiert oder dekrementiert werden soll. Hast du irgendwelche Vorschläge, um es besser zu machen? – Benedict

Antwort

1

Es klingt wie ein OrderUpdated Ereignis reicht nicht granular Ihren Bedürfnissen gerecht zu werden. Basierend auf den von Ihnen bereitgestellten Informationen möchten Sie wahrscheinlich ein spezifischeres Ereignis wie OrderCustomerChanged haben, das sowohl die neue als auch die alte Kunden-ID enthält.

+0

ist es in Ordnung für Auftrag Domain-Ereignis (orderCreated, orderUpdated und orderCustomerChanged) haben unterschiedliche Datenstruktur? – Benedict

+1

Ja - Jeder Ereignistyp ist unabhängig und kann die Struktur haben, die am besten funktioniert. – Codescribler

+1

Schön, einfach und oft nicht so naheliegend. –

Verwandte Themen