by: Arvicco url: http://github.com/arvicco/zmqp
Asynchronous AMQP library sets a standard for messaging. It is well documented and has clean and simple interfaces for most common messaging tasks. However, it implements AMQP standard that has some serious problems and limitation.
ZeroMQ offers a viable alternative to AMQP, as well as 3-10 times performance boost for most common messaging tasks. However, its interfaces are very similar to socket programming and look a bit frightening for the uninitiated.
This library wraps ZeroMQ/ZMQMachine with familiar interfaces that are equivalent to the ones offered by tmm1/amqp. That way, you'll be able to leverage your existing code developed for AMQP, getting additional benefits such as:
- Performance boost (3-10 times for most common messaging tasks)
- No broker-related bottlenecks for high-throughput applications
- Ability to flexibly extend your messaging architecture
- No external dependency on 3rd-party broker software (such as RabbitMQ)
Some library highlights/design choices:
- ZMQP::Client/Connection is actually a connection to a lightweight service registry
- All Exchanges are based on ZMQ sockets/devices
- Queues can be omitted when binding to Exchanges, but if they are not omitted, they are based on ZMQ::Queue device
- Socket complexity is mostly hidden from code by sane defaults, but more granular control is possible through options
Because ZMQ is inherently threaded, it does not make sense to use this library with anything less than MRI 1.9.2, JRuby or Rubinius. MRI 1.9.1 may or may not work, MRI 1.8.7 and its below are broken beyond repair (as far as threading goes).
!!! Currently this library is at pre-alpha stage. Please do not use it for anything serious.
First things first, start with:
$ gem install zmqp
To be added...
(c) 2010 Arvicco
ZeroMQ (iMatix/FastMQ/Intel, C++, GPL3)
Analysis of AMQP problems
Joe Armstrong on Erlang messaging vs RPC
Copyright (c) 2010 Arvicco. See LICENSE for details.