RabbitMQ ruby clients: bunny, amqp, march_hare, rabbitmq_http_api_client, amq-protocol

1. bunny

Bunny is a popular, easy to use, mature Ruby client for RabbitMQ (3.3+) http://rubybunny.info

1.1 Bunny, a Ruby RabbitMQ Client

Bunny is a RabbitMQ client that focuses on ease of use. It is feature complete, supports all recent RabbitMQ features and does not have any heavyweight dependencies.

I Know What RabbitMQ and Bunny are, How Do I Get Started?
Right here!

1.2 What is Bunny Good For?

One can use Bunny to make Ruby applications interoperate with other applications (both built in Ruby and not). Complexity and size may vary from simple work queues to complex multi-stage data processing workflows that involve many applications built with all kinds of technologies.

Specific examples:

  • Events collectors, metrics & analytics applications can aggregate events produced by various applications (Web and not) in the company network.
  • A Web application may route messages to a Java app that works with SMS delivery gateways.
  • MMO games can use flexible routing RabbitMQ provides to propagate event notifications to players and locations.
  • Price updates from public markets or other sources can be distributed between interested parties, from trading systems to points of sale in a specific geographic region.
  • Content aggregators may update full-text search and geospatial search indexes by delegating actual indexing work to other applications over RabbitMQ.
  • Companies may provide streaming/push APIs to their customers, partners or just general public.
  • Continuous integration systems can distribute builds between multiple machines with various hardware and software configurations using advanced routing features of RabbitMQ.
  • An application that watches updates from a real-time stream (be it markets data or Twitter stream) can propagate updates to interested parties, including Web applications that display that information in the real time.

2. amqp

EventMachine-based RabbitMQ client. Prefer Bunny: http://rubybunny.info. See documentation guides at http://rubyamqp.info.

Ruby amqp gem: the asynchronous Ruby RabbitMQ client
Ruby amqp gem is a feature-rich, EventMachine-based RabbitMQ client with batteries included.

It implement AMQP 0.9.1 and support RabbitMQ extensions to AMQP 0.9.1.

A Word of Warning: Use This Only If You Already Use EventMachine
Unless you already use EventMachine, there is no real reason to use this client. Consider Bunny or March Hare instead.

amqp gem brings in a fair share of EventMachine complexity which cannot be fully eliminated. Event loop blocking, writes that happen at the end of loop tick, uncaught exceptions in event loop silently killing it: it’s not worth the pain unless you’ve already deeply invested in EventMachine and understand how it works.

So, just use Bunny or March Hare. You will be much happier.

3. march_hare

https://github.com/ruby-amqp/march_hare

Idiomatic, fast and well-maintained JRuby client for RabbitMQ

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.

3.1 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.

3.2 What 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

4. rabbitmq_http_api_client

RabbitMQ HTTP API client for Ruby

https://github.com/ruby-amqp/rabbitmq_http_api_client

This gem is a RabbitMQ HTTP API client for Ruby. It supports

  • Getting cluster overview information
  • Getting cluster nodes status (# file descriptors used, RAM consumption and so on)
  • Getting information about exchanges, queues, bindings
  • Closing client connections
  • Getting information about vhosts, users, permissions
  • Getting information about enabled plugins, protocols, their ports, etc
  • Managing vhosts, users, permissions

and will support more HTTP API features in the future

  • Publishing messages via HTTP
  • Operations on components/extensions
  • Operations on federation policies

5. amq-protocol

AMQP 0.9.1 protocol serialization and deserialization implementation for Ruby (2.0+)
https://github.com/ruby-amqp/amq-protocol

amq-protocol is an AMQP 0.9.1 serialization library for Ruby. It is not an AMQP client: amq-protocol only handles serialization and deserialization.

If you want to write your own AMQP client, this gem will handle all the serialization needs for you, including RabbitMQ extensions to AMQP 0.9.1.

References

ruby-amqp/bunny: Bunny is a popular, easy to use, mature Ruby client for RabbitMQ (3.3+)
https://github.com/ruby-amqp/bunny

ruby-amqp/amqp: EventMachine-based RabbitMQ client. Prefer Bunny: http://rubybunny.info. See documentation guides at http://rubyamqp.info.
https://github.com/ruby-amqp/amqp

ruby-amqp/march_hare: Idiomatic, fast and well-maintained JRuby client for RabbitMQ
https://github.com/ruby-amqp/march_hare

ruby-amqp/rabbitmq_http_api_client: RabbitMQ HTTP API client for Ruby
https://github.com/ruby-amqp/rabbitmq_http_api_client

ruby-amqp/amq-protocol: AMQP 0.9.1 protocol serialization and deserialization implementation for Ruby (2.0+)
https://github.com/ruby-amqp/amq-protocol

Ruby RabbitMQ clients blog
http://blog.rubyrabbitmq.info/

RabbitMQ – Messaging that just works
http://www.rabbitmq.com/

RabbitMQ – Client Documentation
http://www.rabbitmq.com/clients.html

打赏

Leave a Reply

Your email address will not be published. Required fields are marked *