On 14 June 2011 12:18, Robert Collins <robe...@robertcollins.net> 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. _______________________________________________ Mailing list: https://launchpad.net/~launchpad-dev Post to : launchpad-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~launchpad-dev More help : https://help.launchpad.net/ListHelp