Я наблюдал некоторые проблемы в нашем приложении, когда два экземпляра приложения получали одно и то же сообщение, даже если их потребители были созданы с помощью createSharedConsumer и имели одинаковое имя подписки.
Сначала я подумал, что это может быть наше приложение или то, как мы использовали SpringJMS, поэтому я создал пример приложения, которое создает 3 фабрики соединений. Затем эти фабрики используются для создания сообщения, отправляемого в тему, и двух прослушивателей в одном приложении (но, поскольку они используют другую фабрику соединений и идентификатор клиента, они должны быть полностью отдельными), но все же оба прослушивателя сообщений для двух соединений получают сообщение.
Я пытался запустить это как против 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, указал мне направление того, что мне не хватает?