我的应用程序正在使用发布到主题的消息。我有 3 台服务器,我的应用程序代码正在运行。在当前的实现中,消息被分发到所有正在运行的虚拟机,即每个消费者都会收到消息的副本。
我的要求是每个消费者都应该收到不同的消息,即没有两个消费者应该收到相同的消息。
以下是我正在使用的库:
- 弹簧 jms 4.2.7
- Java jms 2.0
- 蒂博科 JMS 8.0
- Wildfly-swarm 作为服务器
目前我有以下配置:
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。
我缺少什么配置?有人可以帮忙吗?提前非常感谢。 :)
不要使用主题,使用队列...主题设计为发布/订阅,主题的所有订阅者都将收到所有已发布的消息。队列是一进一出的,如果队列上有多个消费者,每个消费者都会收到不同的消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)