2016-06-15 3 views
5

イベントドリブンアーキテクチャを持ち、イベントを購読するサービスが次のイベントの作成を続ける前に(同じ種類の)複数のイベントを待たなければならない場合のベストプラクティスチェーンの中に?イベントドリブンアーキテクチャにおける複数のイベント依存関係の処理

例としては、注文書の各書籍が倉庫によって処理され、注文が選択されて出荷サービス(または同様のもの)が選択されたというイベントを作成するのを待たなければならない書籍注文処理サービスがあります。注文を受け取り、配送の準備を開始します。

答えて

5

パラレルコンボイとも呼ばれるAggregatorパターンを使用することができます。

基本的にあなたが集約される必要があるメッセージを識別するいくつかの方法を持っている必要があり、処理を開始できるように、全体として集約されたセットは、受け取ってきたとき。

外出することなく、buying the book *、アグリゲーターパターンの実装には、Apache Camel統合プラットフォームWebサイトには、nice resourceがあります。これはキャメルに明らかに特定のですが、あなたが関与しているものの種類を見ることができます。

*免責事項、私はAdisonウェズリー、または書籍の著者のいずれかとどのような方法で提携していないのです...

+0

提案いただきありがとうございます。私は実際にSafari Books Onlineを通じて本にアクセスしています。アグリゲータは私が探していたものです。 – Patrick

12

トムは、上記のアグリゲータの横にあるもう一つの有用なパターンがa saga patternです(ミニワークフロー)。私は、メッセージングライブラリと前にそれを使用しました は互いに相関している複数のメッセージを処理するためにコーディネートNServiceBusと呼ばれます。

パターンは非常に有用であり、長期実行中のプロセスのためにきれいに収まります。あなたの相関メッセージはOrderStarted、OrderLineProcessed、OrderCompletedなどの異なるメッセージは、ある場合でも。

+0

良い提案。私は、実行中に失敗する可能性のあるプロセスを処理するためにそれを調べています。そのため、サービスの再起動時や新しいインスタンスの起動時に取得される可能性があります。 – Patrick

関連する問題