我正在尝试使用spring Rabbit库获取特定虚拟主机的所有已声明队列的列表。但我看不出你是怎么做到的。确实存在一个允许您声明队列的RabbitAdmin类,但是您无法检索现有队列的列表。
有什么想法吗?
感谢。
答案 0 :(得分:4)
您无法从Spring / Java客户端执行此操作。
相反,有一个REST API是管理插件http://www.rabbitmq.com/management.html
的一部分看一看 http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_0_2/priv/www/api/index.html 完整的参考。
您将对/api/queues
部分感兴趣,以获取所有队列或/api/queues/vhost
获取给定虚拟机上的队列
答案 1 :(得分:3)
对于那些在2016年阅读的人 - 看看Hop(https://github.com/rabbitmq/hop),它的目的是为Rabbit包装RabbitMQ管理API。
答案 2 :(得分:2)
Spring现在也有一个实现
http://docs.spring.io/spring-amqp/reference/htmlsingle/#management-template
启用管理插件后,RabbitMQ服务器会公开REST API以监视和配置代理。现在提供了API的Java绑定。通常,您可以直接使用该API,但提供了一个便利包装器,以便将熟悉的Spring AMQP Queue,Exchange和Binding域对象与API一起使用。当直接使用com.rabbitmq.http.client.Client API(分别为QueueInfo,ExchangeInfo和BindingInfo)时,可以获得更多有关这些对象的信息。 RabbitManagementTemplate类为管理api提供操作。与这个问题有关的两个是
List<Queue> getQueues();
List<Queue> getQueues(String vhost);