High Availability AMQP Messaging With Redundant Queues
Ruby
Switch branches/tags
Nothing to show
Pull request Compare This branch is 1254 commits behind xing:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
etc
examples
ideas
lib
script
test
tmp
.gitignore
MIT-LICENSE
README.rdoc
Rakefile
TODO
beetle.gemspec

README.rdoc

Beetle

High Availability AMQP Messaging with Redundant Queues

About

Beetle grew out of a project to improve an existing ActiveMQ based messaging infrastructure. It offers the following features:

  • High Availability (by using multiple message broker instances)

  • Redundancy (by replicating queues)

  • Simple client API (by encapsulating the publishing/ deduplication logic)

More information can be found on the project website.

Usage

Configuration

# configure machines

Beetle.config do |c|
  config.servers = "broker1:5672, broker2:5672"
  config.redis_hosts = "redis1:6379, redis2:6379"
end

# instantiate a beetle client

b = Beetle::Client.new

# configure exchanges, queues, bindings, messages and handlers

b.configure do |config|
  config.queue :test
  config.message :test
  config.handler(:test) { |message| puts message.data }
end

Publishing

b.publish :test, "I'm a test message"

Subscribing

b.listen

:include: examples/README.rdoc

Prerequisites

To set up a redundant messaging system you will need

  • at least 2 AMQP servers (we use RabbitMQ)

  • at least one Redis server (better are two in a master/slave setup)

Gem Dependencies

At runtime, Beetle will use

For development, you'll need

  • mocha

  • rcov

Authors

Stefan Kaes, Pascal Friederich and Ali Jelveh.

You cand find out more about our work on our dev blog.

Copyright © 2010 XING AG

Released under the MIT license. For full details see MIT-LICENSE included in this distribution.