有时需要由NodeJS在RabbitMQ重新创建绑定和队列。我需要以编程方式解除绑定,清除并删除它们。我可以保存自己的工作并稍后恢复。我使用amqplib。它混淆了它没有提供可以列出它们的功能。http://www.squaremobius.net/amqp.node/channel_api.html可能吗?缺席的原因是什么?
amqplib不支持从RabbitMQ获取交换,绑定和队列的列表,因为它不是AMQP协议的一部分。
RabbitMQ确实提供了management plugin,其中包括基于HTTP的API。或者,您可以单独维护交换,队列和绑定的列表,并使用node来断言这些,但是仍然不能使用amqplib断言虚拟主机,用户和策略。相反,您将必须安装前面提到的管理插件并使用HTTP。
Rascal之类的库(免责声明-我是作者)的确为自动创建RabbitMQ对象提供了有限的功能。可以将Rascal配置为在应用程序启动时声明虚拟主机(使用http),交换,队列和绑定(使用amqplib),但不会删除多余的对象,并且当前无法创建用户或策略。
另一个选项是备份和还原RabbitMQ的整个配置。我仅使用管理UI来执行此操作,但是HTTP API可能支持它。但是,这不会再次删除备份后添加的对象。
为了完整起见,您可以使用RabbitMQ命令行工具来断言配置。经常使用诸如Puppet,Chef和Ansible之类的工具来自动化该过程,但是考虑到您询问有关node / amqplib的问题,我认为这是不可接受的。
使用上述任何一种方法来尝试重新定义现有对象(例如,更改交换类型或向队列添加不同的x属性的任何尝试都将失败。