1

私たちのアプリケーションでは、コンシューマが 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 の共有コンシューマーを正常に使用したことがある人は、私が欠けている方向を教えてくれますか?

4

1 に答える 1