通过 NodeJS 从 RabbitMQ 获取交换、绑定、队列列表

Get a list of exchanges, bindings, queues from RabbitMQ by NodeJS

有时需要通过 NodeJS 在 RabbitMQ 上重新创建绑定和队列。我需要以编程方式解除绑定、清除和删除它们。我可以保存我所做的并稍后恢复。我使用 amqplib。它混淆了它不提供可以列出它们的功能。 http://www.squaremobius.net/amqp.node/channel_api.html 可能吗?它不存在的原因是什么?

amqplib 不支持从 RabbitMQ 获取交换、绑定和队列的列表,因为这不是 AMQP 协议的一部分。

RabbitMQ 确实提供了一个 management plugin,其中包括一个基于 HTTP 的 API。或者,您可以单独维护一个交换器、队列和绑定的列表,并使用节点来断言这些,但是您仍然无法使用 amqplib 来断言虚拟主机、用户和策略。相反,您必须安装前面提到的管理插件并使用 HTTP。

Rascal 这样的库(免责声明 - 我是作者)也提供了自动创建 RabbitMQ 对象的有限功能。 Rascal 可以配置为在应用程序启动时断言虚拟主机(使用 http)、交换器、队列和绑定(使用 amqplib),但不会删除额外的对象,目前无法创建用户或策略。

另一种选择是备份和恢复 RabbitMQ 的整个配置。我只使用管理 UI 来执行此操作,但 HTTP API 可能支持它。但是,这不会再次删除备份后添加的对象。

为了完整起见,您可以使用 RabbitMQ 命令行工具断言配置。 Puppet、Chef 和 A​​nsible 等工具经常用于自动执行此操作,但考虑到您询问 node/amqplib 我认为这是不可接受的。

任何使用上述任何方法重新定义现有对象(例如更改交换类型,或向队列添加不同的 x 属性)的尝试都将失败。