【问题标题】:Get a list of exchanges, bindings, queues from RabbitMQ by NodeJS通过 NodeJS 从 RabbitMQ 获取交换、绑定、队列的列表
【发布时间】:2020-07-01 10:36:58
【问题描述】:

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

【问题讨论】:

标签: node.js rabbitmq node-amqplib


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多