Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Note that NATS is not HTTP, it's its own very simple text-based protocol.

AMQP is nice, but I don't think anyone would categorize it as simple. It's binary, for one. And to read and write it, you have to deal with framing, which is not always easy to get right. For example, for a long time RabbitMQ had an issue with dead-letter exchanges (aka DLX), where each bounce would add a header to the message envelope. DLX is great for retries, but after a bunch of retries, a message could get quite large. Some clients (the Node.js client in particular) has a small limit on frame sizes and will throw on such messages rather than grow the buffer. (Fortunately, this header was fixed in a recent RabbitMQ version.)



Yes, thanks for reminding me, NATS isnt HTTP.

Didn't say AMQP is simple though. It's definitely not, but that's where the features and functionality come from. It seems the issues you described are with the broker and clients, not the protocol itself, which I find to be pretty solid.


AMQP also specifies the data model (exchanges, queues, bindings and so forth), which dictates the implementation of it. I find that data model a bit heavy-handed, but it's not terrible. However, it's not very suitable for RPC.


It's not too difficult to do RPC over AMQP by having an ephemeral reply queue per request, if your load isn't too high.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: