PTT - messaging based on RabbitMQ and some conventions. It's built on top of Bunny gem.
- Messages are JSON-encoded strings
- Consumers decode JSON payload and call message handlers
- Publisher uses just direct AMQP exchange (however it might change later)
Add this line to your application's Gemfile:
gem 'ptt'And then execute:
$ bundle
Or install it yourself as:
$ gem install ptt
First of all you should register message handlers. A handler object should
respond to #call method. When consumer receives a message from RabbitMQ, it
decodes JSON payload and passes decoded data to the designated handler using
#call method.
# Message handler
class Handler
def call(data)
# process received data
# ...
end
end
# In this case `Handler#call` will be called each time when a new messages comes
# from RabbitMQ with routing key `foo`
PTT.configure do |pneumatic_tube|
pneumatic_tube.register_handler('foo', Handler.new)
endWhen you need to send a message, just call PTT.publish. You have to provide
data and routing key. PTT publisher will encode data to JSON format and will
publish it to the exchange with given routing key.
data = { foo: 'bar' }
# JSON encoded data will be send to exchange with `bar` routing key
PTT.publish('bar', data)$ bundle exec rake
- Fork it ( https://github.com/[my-github-username]/ptt/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
(c) 2016 Alexander Sulim