我使用的是Activemq 5.9.1,我想知道当消费者在相同的队列名称中复制时如何拒绝。
案件就在这里..
(A)消费者是订阅消息" A"队列名称,以及(B)消费者也使用
订阅消息" A"队列名称。
在这种情况下,(A)或(B)消费者将收到消息。
但在我的系统中,不要那样。所以我想拒绝(A)消费者订阅队列" A"和
(B)消费者尝试连接队列名称" A",然后拒绝(B)消费者。
如果有可能拒绝消费者,请告诉我该怎么办?
答案 0 :(得分:2)
您希望通过将consumer.exclusive
标志设置为true来使用Exclusive使用者,如下例所示。
queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");
consumer = session.createConsumer(queue);
这将确保只为第一个连接的消费者提供消息。您将看到所有消费者都已连接,但只有一个会收到消息。如果需要,您可以使用其他消费者作为备份。
如果您根本不想连接,则始终可以将客户端ID设置为相同。如果尝试连接到具有相同客户端ID的客户端,则会引发异常。