← Back to team overview

launchpad-dev team mailing list archive

Re: rabbit, where art thou?

 

On 14 June 2011 12:18, Robert Collins <robertc@xxxxxxxxxxxxxxxxx> wrote:
[...]
> Theres a lot of buzz and review and comparisons between mq's at the
> moment. 0mq and rabbitmq both consistently show up.

0mq isn't really a queuing system afaict, at least not in the sense
that RabbitMQ is a queuing system. There's no persistence for one
thing. The website claims, amongst other things, that it is a "socket
library that acts as a concurrency framework", and that it can
"connect N-to-N via fanout, pubsub, pipeline, request-reply". So, it's
got some routing aspects, but I it's lower level than RabbitMQ or
Burrow. However, it might fit some problems very well (waking up
daemons for example).

Mongrel2 <https://github.com/zedshaw/mongrel2> is an interesting
system that uses 0mq heavily - it serves HTTP and uses 0mq to talk to
the services behind it. It doesn't enforce a request/response model;
any back-end service can reply to the client by virtue of 0mq's
routing. Mongrel2 is very happy with long-polls, and groks WebSocket
and JSSocket (via Flash I think) out of the box. Perhaps there's
something to be learned from it.

Also, Aaron brough up Kestrel as an alternative in a previous thread,
and I collected some excerpts from Kestrel's README a while back:

  Each server handles a set of reliable, ordered message queues. When
  you put a cluster of these servers together, with no cross
  communication, and pick a server at random whenever you do a set or
  get, you end up with a reliable, loosely ordered message queue.

  In many situations, loose ordering is sufficient. Dropping the
  requirement on cross communication makes it horizontally scale to
  infinity and beyond: no multicast, no clustering, no "elections", no
  coordination at all. No talking! Shhh!

  ...

  Small: Currently about 2K lines of scala (including comments),
  because it relies on Apache Mina (a rough equivalent of Danger's
  ziggurat or Ruby's EventMachine) and actors -- and frankly because
  Scala is extremely expressive.

  Durable: Queues are stored in memory for speed, but logged into a
  journal on disk so that servers can be shutdown or moved without
  losing any data.

  ...

  Kestrel is not transactional: This is not a database. Item ownership
  is transferred with acknowledgement, but kestrel does not support
  grouping multiple operations into an atomic unit.


Follow ups

References