Hacker News new | comments | show | ask | jobs | submit login

> RabbitMQ has some pretty serious limitations related to it being implemented on Erlang that keep it pretty strictly in the realm of being a message queue rather than a generic queue.

Interesting, where can I learn more about this claim? What are the incompatible facets of a generic queue and Erlang? What is an example of these generic queues (or if it's only an ideal, what are its characteristics)?

Just don't use it for big, long-lived work queues and you'll be fine.

If the queue gets badly backed up, you're probably fucked.

Larger, longer-lived work queues are really more of a Hadoop thing, not an in-memory queue thing.

I got curious and googled a bit, here's what I found: http://www.quora.com/RabbitMQ/RabbitMQ-vs-Kafka-which-one-fo...

Where the first answer states that: "RabbitMQ presumes that consumers are mostly online, and any messages "in wait" (persistent or not) are held opaquely (i.e. no cursor). RabbitMQ pre-2.0 (2010) would fall over if your consumers were too slow, but now it's robust for online and batch consumers - but clearly large amounts of persistent messages sitting in the broker was not the main design case for AMQP in general."

(It's contrasted with Kafka, which is "designed for holding and distributing large volumes of messages")

Still, I see no reason why you say that it's Erlang that causes this?

People often use Erlang primarily for the memory model. Pure in-memory didn't work for our use-case.

You can implement a queue that works better for batch work in Erlang, it's just that it'd be closer to a data store.

> If the queue gets badly backed up, you're probably fucked.

Isn't that true of any queue ?

Not really, no. Depends on what how narrow you are about the definition of "queue".

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact