dslh / ptt

PTT - Pneumatic Tube Transport

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PTT - Pneumatic Tube Transport

PTT - messaging based on RabbitMQ and some conventions. It's built on top of Bunny gem.

Conventions

  • Messages are JSON-encoded strings
  • Consumers decode JSON payload and call message handlers
  • Publisher uses just direct AMQP exchange (however it might change later)

Installation

Add this line to your application's Gemfile:

gem 'ptt'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ptt

Usage

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)
end

When 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)

Testing

$ bundle exec rake

Contributing

  1. Fork it ( https://github.com/[my-github-username]/ptt/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

(c) 2016 Alexander Sulim

About

PTT - Pneumatic Tube Transport

License:MIT License


Languages

Language:Ruby 100.0%