アプリケーションで ActiveMQ 5.8.0 メッセージ グループを使用しようとしていますが、ドキュメントを読んでも期待した結果が得られません。
特定のキューに対して 2 つ (またはそれ以上) のコンシューマーを開始し、メッセージをキューに送信します。プロデューサーの createMessage メソッドでは、次のものを使用しています。
message.setStringProperty("JMSXGroupID", "foo");
GroupID を設定します。テスト目的で、「foo」をハードコーディングしていることに注意してください。最終的には、プロデューサーによって設定された文字列になります。
メッセージに設定されているメッセージ グループは 1 つだけなので、1 つのコンシューマーがアクティブになり、キュー内のすべてのメッセージを消費し、もう 1 つのコンシューマーは静止したままになると予想していました。
代わりに、最初のメッセージが最初のコンシューマーによって処理され、最初のコンシューマーが終了した後に 2 番目のメッセージが 2 番目のコンシューマーによって処理されることがわかります。コンシューマーは、すべてのメッセージが消費されるまで、この方法で交代を続けます。
これは予想される動作ですか、それとも、各 GroupID が単一のコンシューマーに関連付けられるようにするために、ActiveMQ またはプロデューサーまたはコンシューマーのいずれかで行う必要がある追加の構成がありますか?