私たちのアプリケーションでは、コンシューマが createSharedConsumer を使用して作成され、同じサブスクリプション名を持っていたにもかかわらず、アプリケーションの 2 つのインスタンスが同じメッセージを受信していたという問題がいくつか見られました。
最初は、これが私たちのアプリなのか、SpringJMS の使い方なのかと思ったので、3 つの接続ファクトリを作成するサンプル アプリケーションを作成しました。次に、これらのファクトリを使用して、同じアプリケーション内のトピックと 2 つのリスナーに送信されるメッセージを作成します (ただし、異なる接続ファクトリとクライアント ID を使用しているため、これらは完全に分離する必要があります) が、2 つの接続の両方のメッセージ リスナーが受信しています。メッセージ。
これを HornetQ と Tibco の両方に対して実行してみましたが、同じ結果が得られました。
MessageListener を実装するクラスで次のように作成されたメッセージ コンシューマー
Connection connection = factory.createConnection(userName, password);
Session session = connection.createSession();
MessageConsumer topicReceiver = session.createSharedConsumer(topic, SUBSCRIPTION_NAME);
topicReceiver.setMessageListener(this);
connection.start();
JMS 2.0 の共有コンシューマーを正常に使用したことがある人は、私が欠けている方向を教えてくれますか?