Мое приложение использует сообщения, опубликованные в теме.У меня есть 3 сервера, на которых выполняется код моего приложения.В текущей реализации сообщения распределяются по всем работающим виртуальным машинам, т. Е. Копия сообщения принимается каждым потребителем.
Мое требование состоит в том, чтобы каждый потребитель получал отдельное сообщение, т.е. ни один потребитель не должен получать одно и то же сообщение.
Ниже приведены библиотеки, которые я использую:
- spring jms 4.2.7
- Java jms 2.0
- tibco jms 8.0
- wildfly-swarm as server
В настоящее время у меня есть следующая конфигурация:
TibjmsConnectionFactory factory = new TibjmsConnectionFactory("server-url");
factory.setUserName("username");
factory.setUserPassword("password");
factory.setClientID("clientId");
DefaultMessageListenerContainer listener = new DefaultMessageListenerContainer();
listener.setPubSubDomain(true);
listener.setMessageListener(myMessageListener);
listener.setDestination(new TibjmsTopic("topic"));
listener.setConnectionFactory(factory);
listener.setSessionTransacted(true);
listener.setSessionAutoAcknowledged(Session.CLIENT_ACKNOWLEDGE);
listener.setSubscriptionDurable(true);
listener.setDurableSubscriptionName("subscription");
listener.setSubscriptionShared(true);
Но это не то, что я ожидаю.Используя приведенный выше конфиг, все потребители получают все сообщения.
Чтобы добавить, я указал одинаковое DurableSubscriptionName, но отдельный ClientId для всех запущенных экземпляров.
Какая конфигурация мне не хватает?Может кто-нибудь помочь, пожалуйста?Большое спасибо заранее.:)