Jimmy Boagard beschreibt eine McDonalds Fast-Food-Kette here es von oben Artikeln gestohlen zu einer scatter gather pattern.Wie eine Sage mit einem Scatter/Gather Muster In Masstransit 3.0
Workflow-Bild im Vergleich zu implementieren:
Erstimplementierung Gedanken:
Um eine gemeinsame Schnittstelle für alle Arten von FoodOrdered Veranstaltungen zu haben, die alle Lebensmittelstationen bekommen würden und dann jede Lebensmittelstation wäre in der Lage zu konsumieren/schaffen seine jeweiligen Posten und veröffentlichen Sie ein gemeinsames Ereignis. Bsp .: Pommes und Burger-Station bekommt eine Nachricht bezüglich einer Bestellung von Fries, die Pommes-Station konsumiert die Bestellung kündigt ein ItemDoneEvent an, auf das die Saga wartet.
Anfängliche Bedenken:
Da die Saga nicht über die Art der Nahrung nur die Tatsache abgeschlossen ist egal, dass alle Lebensmittel abgeschlossen ist dies scheint eine OK Lösung. Jedoch nach Lesen Warnungen here in Bezug auf die gemeinsame Nutzung von Warteschlangen und merkt, dass Consumer.Conditional filtering has been removed with MassTransit 3.0 Es fühlt sich an, als ob das Framework sagt "Bad Things (TM) wird passieren" mit dieser Art von Ansatz. Aber ich bin nicht sicher, wie sonst Sie es ohne das Errichten einer Nachrichtenanforderung und -antwort und des Korrelierens des Ereignisses für jedes Nahrungsmittel in der Küche tun würden. Ex: FriesOrdered, BurgerOrdered FriesCooked, BurgerCooked. Das wäre sehr mühsam, wenn du das für jeden Gegenstand in der Küche machen müsstest?
Angesichts der oben genannten Bedenken - wie würde eine gute Saga Beispiel für diese Art von Workflow aussehen?
Ich kann über das Wochenende eine Wende machen und eine Probe auf das MT-Repository stellen. –
Chris, hast du jemals eine Chance bekommen, dabei zu schwingen? Ich bin derzeit auf der Suche nach einem ähnlichen Problem –
Warum können Sie nicht die Liste der bestellten Lebensmittel in Saga-Instanz und entfernen Sie Elemente aus der Liste oder als "fertig" in der Liste Wert Objekte, wenn Sie eine generische "FoodReady" mit erhalten bestimmte 'FoodType' in der Nachricht? Wenn du schließlich herausfindest, dass die Liste leer ist, kannst du die Saga abschließen. –