我正在尝试使用 spring Rabbit 库获取特定虚拟主机的所有声明队列的列表。但我看不出你是怎么做到的。确实存在一个允许您声明队列的 RabbitAdmin 类,但您无法检索现有队列的列表。
有任何想法吗?
谢谢。
您将无法从 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
获取给定虚拟主机上的队列的部分感兴趣
Spring现在也有一个实现
http://docs.spring.io/spring-amqp/reference/htmlsingle/#management-template
启用管理插件后,RabbitMQ 服务器会公开一个 REST API 来监控和配置代理。现在提供了 API 的 Java 绑定。通常,您可以直接使用该 API,但提供了一个方便的包装器,以便将熟悉的 Spring AMQP 队列、交换和绑定域对象与 API 一起使用。当直接使用 com.rabbitmq.http.client.Client API(分别为 QueueInfo、ExchangeInfo 和 BindingInfo)时,这些对象可以获得更多信息。RabbitManagementTemplate 类为管理 API 提供操作。与这个问题有关的两个是
List<Queue> getQueues();
List<Queue> getQueues(String vhost);
对于那些在 2016 年阅读的人 - 看看 Hop ( https://github.com/rabbitmq/hop ),它旨在为 Java 包装 RabbitMQ 管理 API。