同じイベントに対して2種類のワーカーがあります。AMQPとファンアウトとダイレクト交換を混ぜる
メッセージは私の労働者のうちの1人にしか発送されません(「直接」取引所など)。しかし、他の労働者はすべてメッセージを処理する必要があります(ファンアウトのような)。
説明が少し難しいですが、そのアイデアはここにあります。そして、おそらく次のスキーマは私が望むものを理解するのに役立ちます。
あなたは解決策を持っていますか?
敬具、 ベン
同じイベントに対して2種類のワーカーがあります。AMQPとファンアウトとダイレクト交換を混ぜる
メッセージは私の労働者のうちの1人にしか発送されません(「直接」取引所など)。しかし、他の労働者はすべてメッセージを処理する必要があります(ファンアウトのような)。
説明が少し難しいですが、そのアイデアはここにあります。そして、おそらく次のスキーマは私が望むものを理解するのに役立ちます。
あなたは解決策を持っていますか?
敬具、 ベン
あなたの最良のオプションは、あなたの交換とあなたのキュー間で複数のバインディングとルーティングキーを使用することです。
ファンアウトではなく、直接またはトピック交換をお勧めします。
は、上記のあなたの例のイメージをモデル化するために、あなたの構成は次のようになります。| exchange | routing key | queue |
|----------|-------------|---------|
| some.ex | type.1 | queue.1 |
| some.ex | type.1 | queue.2 |
| some.ex | type.1 | queue.3 |
| some.ex | type.2 | queue.4 |
| some.ex | type.2 | queue.5 |
は基本的に、あなたは、キューごとにルーティングキーと労働者一人当たりのキューを持っている必要があります。
交換、キュー、バインディングについてもう少し詳しく読んで、いつ使用するのかを理解することができます。私はこれをカバーするいくつかの電子ブックを(他のRMQの使用シナリオと共に)https://leanpub.com/u/derickbailey
あなたが正しく理解していれば、 "type-2"は、すべてがイベントを受け入れるべきである複数のハンドラ(ログハンドラのような)として扱うことができます。
私が正しいとすれば、2つのキュー(交換)を連結することができます。 exchange1 - fanout - すべての "type-2"(ロガー)はここで待機しますので、すべてのイベントを取得します exchange2 - direct - すべての "type-1"がここで待機するので、イベントは1人だけです。
トリック - "exchange1"でリッスンしているコンシューマーが "exchange2"にもパブリッシュされていることを確認する必要があります。
ちょっとPauwelyn、私は実際にそれが質問に答えると思うが、私は間違いなくあなたのポイントを得る。ありがとう!! – user7412510