amqp vs amqplib - which Node.js amqp client library is better?

倾然丶 夕夏残阳落幕 提交于 2019-12-03 01:10:17

问题


What are the differences between those amqp client libraries? Which one is the most recommended? What are the major differences?


回答1:


I would recommend amqp.node and bramqp over node-amqp. node-amqp has a lot of bugs and is poorly maintained, and it hides the "channel" concept which introduces a lot of problems for rabbitmq servers (because they are never closed).




回答2:


I'm the guy that wrote the bramqp library. So I'm going to admit from the start I may be a bit biased. :P

In my opinion, as long as you know the spec, bramqp should work fine. Otherwise, use amqp.node


The following are the amqp libraries available for node.js.

amqplib / amqp.node - promise style, still updated, looks pretty stable and easy

bramqp - provides a full low level access to AMQP functions, not recommended for starting out

amqp-coffee - coffeescript implementation similar to amqp/node-amqp

amqp / node-amqp - popular, fixed API, not updated as often, a few odd bugs, stable but limited


The following libraries use one of the previous libraries, while providing an easier to use interface or adding features

rabbit.js uses amqplib/amqp.node

wascally uses amqplib/amqp.node

amq uses amqplib/amqp.node

amqpea uses bramqp

easy-amqp uses amqp/node-amqp

rabbus uses wascally


I am also going to add node-amqp10 separately, as it can connect to amqp 1.0 servers.

If there are any more that I should add, just let me know.




回答3:


I have been using node-amqp

npm install amqp

This is the one recommended by RabbitMQ which is why I've been using it. From what I've been doing, this module is more dry and readable compared to the other libraries I have seen.




回答4:


I used both for a while. At the first glance, it might seem that node-amqp (amqp) is more adequate but it actually has so many bugs and no one is fixing them. For instances,

  1. RabbitMQ's MQTT and STOMP adapter should allow communication between clients using those 2 protocols with clients using AMQP, but node-amqp just fails to parse messages sent by MQTT or STOMP, while amqp.node (amqplib) can.
  2. node-amqp (amqp) has implemented auto-reconnecting and so doesn't throw exceptions on accidental disconnection. That means you will be forced to use the built-in reconnecting, you can't detect disconnection and handle it yourself. However, its reconnecting always double the number of connections. It will exhaust both client and server eventually. I'd rather code my own reconnecting function with amqp.node (amqplib).

I tested it with broker provided by www.robomq.io, it's a good one so the blame should be of the library. Implementing a perfect library in Node.js is tough though.

By the way, you can find a full set of example code using amqp.node (amqplib) in 5 scenarios at https://github.com/robomq/robomq.io/tree/master/sdk/AMQP/Node.js and the documentation at http://robomq.readthedocs.org/en/latest/one-one/#nodejs.




回答5:


Just started learning rabbitmq myself. I've found from other blogs that ampq.node is well accepted. Another one that I've found (not tested) is from wascally. https://github.com/LeanKit-Labs/wascally




回答6:


https://github.com/guidesmiths/rascal#rascal worth a mention too. It's built on top of amqplib, and has a set of useful features like auto reconnection logic, configuration based subscription / publication and good support for TDD.



来源:https://stackoverflow.com/questions/20128124/amqp-vs-amqplib-which-node-js-amqp-client-library-is-better

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!