henchman
A thin wrapper around amqp.
Installation
Ruby
We use Ruby 1.9.3.
To install and run on your local machine use RVM. For Mac machines make sure you compile with gcc-4.2 (because the compiler from Xcode doesn't compile Ruby 1.9.3 properly). Download and install gcc from https://github.com/kennethreitz/osx-gcc-installer
$ gem install rvm
$ rvm install 1.9.3
And for Macs
$ rvm install 1.9.3 --with-gcc=gcc-4.2
Rubygems
Use Bundler to install the gems needed by Herdis
$ bundle install
RabbitMQ
henchman naturally needs RabbitMQ to run. Install it and run it with default options.
Using
Queues
To enqueue jobs that will only be consumed by a single consumer, you
EM.synchrony do
Henchman.enqueue("test", {:time => Time.now.to_s})
end
To consume jobs enqueued this way
EM.synchrony do
Henchman::Worker.new("test") do
puts .inspect
puts headers
end.consume!
end
The script/enqueue
and script/consume
scripts provide a test case as simple as possible.
If you want a global error handler for the all consumers in your Ruby environment
EM.synchrony do
Henchman.error do
global_error_handler(exception)
end
end
Broadcasts
To publish jobs that will be consumed by every consumer listening to your exchange, you
EM.synchrony do
Henchman.publish("testpub", {:time => Time.now.to_s})
end
To consume jobs published this way
EM.synchrony do
Henchman::Worker.new("test") do
puts .inspect
puts headers
end.subscribe!
end
The script/publish
and script/receive
scripts provide a test case as simple as possible.
Error handling is done the exact same way as with the single consumer case.
Test suite
$ rake
Console
To run an eventmachine-friendly console to test your servers from IRB
$ bundle exec em-console