我的应用程序正在使用发布到主题的消息。我有3台运行我的应用程序代码的服务器。在当前的实现中,消息将分发到所有正在运行的VM,即每个消费者都将收到消息的副本。
我的要求是,每个消费者都应该收到不同的消息,即没有两个消费者应该收到相同的消息。
以下是我正在使用的库:
当前我具有以下配置:
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。
我缺少什么配置?有人可以帮忙吗?在此先感谢一吨。 :)
答案 0 :(得分:1)
不使用主题,使用队列...设计使主题为pub / sub,主题的所有订阅者都将收到所有已发布的消息。队列是一对一的,如果队列中有多个使用者,每个使用者都会收到不同的消息。