4.5. Exchange サブスクリプションパターン
Exchange にサブスクライブする 3 つのパターンがあります。
- メッセージのコピー
- メッセージの移動
- 排他的バインディング
メッセージのコピー
メッセージのコピーは、各コンシューマーがすべてのメッセージの独自のコピーを取得する場所です。
注記
このアプローチは、パブリッシュ/サブスクライブパターン、一時 またはプライベートサブスクリプション としても知られて います。
この場合、アプリケーションが切断されると破棄される一時的なプライベートキューが作成され、バインドされます。このアプローチは、複数のコンシューマー間でメッセージの責任を共有する必要がない場合や、アプリケーションが稼働していない場合や切断された時に送信されるメッセージを重要としない場合に合理的です。
たとえば、サービスがメッセージに基づいてログのアクティビティーをログに記録する場合や、複数のコンシューマーにイベントの通知が必要な場合などに、この方法は理にかなっています。
メッセージの移動
メッセージの移行では、複数のコンシューマーが同じキューに接続し、ラウンドロビン方式でキューからメッセージを取得する場合です。
注記
このアプローチは Shared Queue としても知られています。
コンシューマー A とコンシューマー B が同じ共有キューにアクセスしている場合、コンシューマー A はコンシューマー B がキューから取得するメッセージを表示しません。たとえば、ワーカーノードがワークキューからジョブをディスパッチするケースでは、この方法が理にかなっています。1 つのノードでは、各メッセージのみを表示する必要があります。
これにより、アプリケーションが切断されている場合はキューでメッセージをバッファーでき、キュー内のメッセージに対する責任を複数コンシューマーが共有できるようになります。
たとえば、ワーカーノードがワークキューからジョブをディスパッチするケースでは、この方法が理にかなっています。1 つのノードでは、各メッセージのみを表示する必要があります。
これらの 2 つのパターンは相互排他的ではありません。たとえば、3 つのワーカーノードはラウンドロビン方式でキューを共有でき、別のプロセスはキューに独自のメッセージのコピーを取得してアーカイブを作成できます。
排他的バインディング
3 つ目のパターンの exclusive バインディングは、コンシューマーのみがエンドポイントにルーティングされるメッセージにアクセスできることについて規定しています。
注記
排他的バインディングが AMQP 1.0 でサポートされない