我在我们的应用程序中看到了一些问题,其中应用程序的两个实例接收到相同的消息,即使它们的消费者是使用 createSharedConsumer 创建的并且具有相同的订阅名称。
起初我认为这可能是我们的应用程序或我们使用 SpringJMS 的方式,所以我创建了一个示例应用程序,它创建了 3 个连接工厂。然后,这些工厂用于创建发送到同一应用程序中的主题和两个侦听器的消息(但由于它们使用不同的连接工厂和客户端 ID,它们应该完全分开),但两个连接的两个消息侦听器仍在接收消息。
我已经尝试对 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 中的共享消费者,并指出我所缺少的方向?