Jimmy Boagard は、ここでMcDonald のファスト フード チェーンをスキャッター ギャザー パターンと比較して 説明しています。
最初の実装の考え:
すべてのフード ステーションが取得するすべての種類の FoodOrdered イベントに共通のインターフェイスを用意し、各フード ステーションがそれぞれのアイテムを消費/作成して、共通の完了イベントを発行できるようにします。例: フライド ポテトとバーガー ステーションは、フライド ポテトの注文に関するメッセージを受け取ります。フライド ポテト ステーションは、注文を消費します。
最初の懸念事項:
Saga は完了した食品の種類を気にしないので、すべての食品が完了したという事実だけで、これは問題ないように思われます。ただし、ここでキューの共有に関する警告を読んだ後、MassTransit 3.0 で Consumer.Conditional フィルタリングが削除されたことに気づきました。しかし、メッセージのリクエストと応答を作成し、キッチンの各食品のイベントを関連付けることなしに、どのようにそれを行うかはわかりません。例: FriesOrdered、BurgerOrdered FriesCooked、BurgerCooked。キッチンのすべてのアイテムに対してこれを行う必要がある場合、これは非常に面倒ですか?
上記の懸念事項を踏まえると、このタイプのワークフローの良いサガの例はどのようなものでしょうか?