March Hare, a JRuby RabbitMQ Client
March Hare is an idiomatic, fast and well-maintained (J)Ruby DSL on top of the RabbitMQ Java client. It strives to combine strong parts of the Java client with over 4 years of experience using and developing Ruby amqp gem and Bunny.
Why March Hare
- Concurrency support on the JVM is excellent, with many tools & approaches available. Lets make use of it.
- RabbitMQ Java client is rock solid and supports every RabbitMQ feature. Very nice.
- It is screaming fast thanks to all the heavy duty being done in the pretty efficient & lightweight Java code.
- It uses synchronous APIs where it makes sense and asynchronous APIs where it makes sense. Some other Ruby RabbitMQ clients only use one or the other.
- amqp gem has certain amount of baggage it cannot drop because of backwards compatibility concerns. March Hare is a clean room design, much more open to radical new ideas.
What March Hare is not
March Hare is not
- A replacement for the RabbitMQ Java client
- An attempt to re-create 100% of the amqp gem API on top of the Java client
- A "work queue" like Resque
- A cure for cancer
March Hare is not a young project. Extracted from a platform that transports more than a terabyte of data over RabbitMQ every day, it has been around as an open source project since mid-2011 and has reached 2.0 in late 2013.
It is based on the RabbitMQ Java client, which is officially supported by the RabbitMQ team at Pivotal.
gem install march_hare
gem "march_hare", "~> 2.21.0"
MarchHare documentation guides are mostly complete.
API reference is available.
Supported Ruby Versions
March Hare supports JRuby 9.0.
Supported JDK Versions
The project is tested against OpenJDK 8, Oracle JDK 8 and is known to work on OpenJDK 7 and Oracle JDK 7.
CI is hosted by travis-ci.org
You'll need a running RabbitMQ instance with all defaults and management plugin enabled on your local machine to run the specs.
To boot one via docker you can use:
$ docker run -p 5672:5672 -p 15672:15672 rabbitmq:3-management
And then you can run the specs using
$ bundle exec rspec
MIT, see LICENSE in the repository root
Theo Hultberg, Michael Klishin, 2011-2016.