【发布时间】:2012-02-01 03:26:07
【问题描述】:
我有一个将消息推送到主题的发布者。我有多个订阅者,一旦他们使用来自主题的消息,每个订阅者都会执行不同的任务。 现在我希望我的系统能够扩展到在不同主机/同一主机上运行的同一进程的多个实例。例如我想在不同的主机上运行我的应用程序 A 的多个副本,这样如果 A 的一个实例很慢,那么其他实例可以拉入后续消息并取得进展.. 我发现使用虚拟目的地可以做到这一点。我按照这里的步骤 - http://activemq.apache.org/virtual-destinations.html
但是我如何设置多个订阅者到具有相同客户端 ID 的同一主题?当我尝试这样做时,我得到了错误。当我尝试其他方式时,它不起作用。有人可以帮忙吗?
通常,我通过执行以下步骤来启动订阅者 -
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL;);
activeMQConnection = connectionFactory.createConnection();
activeMQConnection.setClientID("subscriber1");
activeMQConnection.setExceptionListener(exceptionListener);
activeMQSession = activeMQConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
activeMQTopic = activeMQSession.createTopic("myTopic");
activeConsumer = activeMQSession.createDurableSubscriber(activeMQTopic, "myTopic");
activeConsumer.setMessageListener(messageListener);
activeMQConnection.start();
当我尝试创建第二个订阅者并将主题名称传递为“VirtualTopic.myTopic”时,没有任何反应。
谢谢
【问题讨论】:
-
@vinod 你提到了这些 [链接] (activemq.apache.org/virtual-destinations.html)。我在那个链接中看到了 xml 代码。在哪里可以找到那个 xml 文件。
标签: java jms messaging activemq