如何获取Spring-AMQP中已经声明的队列的使用者计数?

时间:2019-05-24 12:33:23

标签: java rabbitmq spring-amqp spring-rabbitmq

有没有办法找出Spring AMQP中已经声明的队列的订户计数?我找到了一个com.rabbitmq.client.Channel类,可以使用它来完成此任务:

int consumerCount = channel.queueDeclare().getConsumerCount();

但是,这会声明一个具有随机名称的新队列,并且由于它没有使用者,因此它将返回0

对于已经声明的队列,有什么办法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用passive declaration

  

被动声明仅检查具有提供名称的实体是否存在。如果是这样,则该操作为无操作。对于成功的队列,被动声明将返回与非被动声明相同的信息,即队列中处于就绪状态的使用者和消息的数量。

Queue.DeclareOk response = channel.queueDeclarePassive("queue-name");
// returns the number of messages in Ready state in the queue
response.getMessageCount();
// returns the number of consumers the queue has
response.getConsumerCount();