amqp vs amqplib – 哪个Node.js amqp客户端库比较好?

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

我会推荐amqp.node和bramqp over node-amqp。 node-amqp有很多bug,并且维护得不好,它隐藏了“通道”的概念,为rabbitmq服务器引入了很多问题(因为它们从不closures)。

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

在我看来,只要你知道规范, bramqp应该可以正常工作。 否则,使用amqp.node


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

amqplib / amqp.node – 承诺风格,仍然更新,看起来相当稳定和容易

bramqp – 提供对AMQPfunction的完全低级访问,不build议用于启动

amqp-coffee – 与amqp / node-amqp相似的coffeescript实现

amqp / node-amqp – stream行的,固定的API,没有经常更新,几个奇怪的bug,稳定但有限


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

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服务器。

如果还有什么我应该补充的,请让我知道。

我一直在使用node-amqp

npm install amqp 

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

我用了一会儿。 乍看之下,node-amqp(amqp)似乎更适合,但实际上有很多bug,没有人修复它们。 为实例,

  1. RabbitMQ的MQTT和STOMP适配器应允许使用这两种协议的客户端与使用AMQP的客户端进行通信,但node-amqp只能parsing由MQTT或STOMP发送的消息,而amqp.node(amqplib)则可以。
  2. node-amqp(amqp)实现了自动重新连接,所以不会在意外断开连接时抛出exception。 这意味着你将被迫使用内置的重新连接,你无法检测到断开连接并自己处理。 但是,重新连接总是连接数量的两倍。 它将最终耗尽客户端和服务器。 我宁愿编写自己的重新连接函数amqp.node(amqplib)。

我用www.robomq.io提供的经纪人进行了testing,这是一个很好的select,所以责怪应该是图书馆。 在Node.js中实现一个完美的库是很困难的。

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

刚刚开始学习rabbitmq我自己。 我从其他博客发现,ampq.node是很好的接受。 另一个我发现(没有testing)是从wascally。 https://github.com/LeanKit-Labs/wascally

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