amqp vs amqplib - 哪个Node.js amqp客户端库更好?

时间:2013-11-21 17:40:26

标签: node.js rabbitmq amqp

这些amqp客户端库有什么区别? 哪一个是最推荐的? 有哪些主要区别?

7 个答案:

答案 0 :(得分:48)

我建议使用{-3}}和amqp.node over node-amqp。 node-amqp有很多错误并且维护得很差,它隐藏了“通道”概念,这给rabbitmq服务器带来了很多问题(因为它们永远不会关闭)。

答案 1 :(得分:44)

我是编写bramqp库的人。所以我从一开始就承认我可能有点偏颇。 :P

在我看来,只要您了解规范,bramqp应该可以正常工作。否则,请使用amqp.node


以下是node.js可用的amqp库。

amqplib / amqp.node - 承诺风格,仍然更新,看起来非常稳定和轻松

bramqp - 提供对AMQP功能的完全低级访问,不推荐用于开始

amqp-coffee - coffeescript实现类似于amqp / node-amqp

amqp / node-amqp - 流行的,固定的API,不经常更新,一些奇怪的错误,稳定但有限


以下库使用以前的库之一,同时提供更易于使用的界面或添加功能

rabbit.js使用amqplib / amqp.node

wascally使用amqplib / amqp.node

amq使用amqplib / amqp.node

amqpea使用bramqp

easy-amqp使用amqp / node-amqp

rabbus使用wascally


我还要单独添加node-amqp10,因为它可以连接到amqp 1.0服务器。

如果我还有其他内容,请告诉我。

答案 2 :(得分:2)

我一直在使用node-amqp

npm install amqp

这是RabbitMQ推荐的那个,这就是我使用它的原因。从我一直在做的事情来看,与我见过的其他图书馆相比,这个模块更加干燥和可读。

答案 3 :(得分:2)

我用了一段时间。乍一看,似乎node-amqp(amqp)更加充足,但它实际上有很多错误,没有人修复它们。例如,

  1. RabbitMQ的MQTT和STOMP适配器应该允许客户端使用这两个协议与使用AMQP的客户端进行通信,但是node-amqp无法解析MQTT或STOMP发送的消息,而amqp.node(amqplib)可以。
  2. node-amqp(amqp)已实现自动重新连接,因此不会在意外断开时抛出异常。这意味着您将被迫使用内置重新连接,您无法检测断开连接并自行处理。但是,它的重新连接总是使连接数增加一倍。它最终会耗尽客户端和服务器。我宁愿使用amqp.node(amqplib)编写自己的重新连接函数。
  3. 我用www.robomq.io提供的经纪人对它进行了测试,这是一个很好的,所以应该归咎于图书馆。在Node.js中实现一个完美的库是很难的。

    顺便说一句,您可以在https://github.com/robomq/robomq.io/tree/master/sdk/AMQP/Node.js的5个方案和http://robomq.readthedocs.org/en/latest/one-one/#nodejs的文档中使用amqp.node(amqplib)找到一整套示例代码。

答案 4 :(得分:2)

这个问题可能需要在2020年得到更新的答案。

关于不同库的功能,您仍然可以参考bakkerthehacker的答案。

2020年:

  1. amqp似乎不再受支持。最后一次 2年前出版。
  2. 对于AMQP 0-9-1协议,amqplib是使用最广泛的协议 库。
  3. 对于AMQP 1.0协议,您可以使用rhea

答案 5 :(得分:0)

刚开始自己​​学习rabbitmq。我从其他博客中发现,ampq.node很受欢迎。我发现的另一个(未经测试)是来自wascally。 https://github.com/LeanKit-Labs/wascally

答案 6 :(得分:0)

https://github.com/guidesmiths/rascal#rascal也值得一提。它构建于amqplib之上,具有一系列有用的功能,如自动重新连接逻辑,基于配置的订阅/发布以及对TDD的良好支持。