launchpad-dev team mailing list archive
-
launchpad-dev team
-
Mailing list archive
-
Message #07353
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