如何在使用队列时拒绝重复的使用者

时间:2014-12-08 08:51:41

标签: activemq

我使用的是Activemq 5.9.1,我想知道当消费者在相同的队列名称中复制时如何拒绝。

案件就在这里..

(A)消费者是订阅消息" A"队列名称,以及(B)消费者也使用

订阅消息

" A"队列名称。

在这种情况下,(A)或(B)消费者将收到消息。

但在我的系统中,不要那样。所以我想拒绝(A)消费者订阅队列" A"和

(B)消费者尝试连接队列名称" A",然后拒绝(B)消费者。

如果有可能拒绝消费者,请告诉我该怎么办?

1 个答案:

答案 0 :(得分:2)

您希望通过将consumer.exclusive标志设置为true来使用Exclusive使用者,如下例所示。

queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");
consumer = session.createConsumer(queue);

这将确保只为第一个连接的消费者提供消息。您将看到所有消费者都已连接,但只有一个会收到消息。如果需要,您可以使用其他消费者作为备份。

如果您根本不想连接,则始终可以将客户端ID设置为相同。如果尝试连接到具有相同客户端ID的客户端,则会引发异常。