Lolitra
Amqp and Faye event bus
Installation
Add this line to your Gemfile:
gem 'lolitra'
And then execute:
$ bundle
Or install it yourself as:
$ gem install lolitra
Usage
Create an event bus on initializers
Lolitra::RabbitmqBus.new(
:exchange => "exchangetest",
:host => "127.0.0.1",
:port => 5672,
:user => "guest",
:pass => "guest",
:pull_subscribers => [DevicesHandler]
)
Create messages
class DeviceCreated
include Lolitra::Message
attr_accessor :id, :name
'assets.device.created'
end
class DeviceMoved
include Lolitra::Message
attr_accessor :id
'assets.device.moved'
end
Create a message handler
class DevicesHandler
include Lolitra::MessageHandler
DeviceCreated, :id
DeviceMoved, :id
stateful false
def device_created()
Device.new({:id => .id})
end
def deivce_moved()
Device.move({:id => .id})
end
end
Rabbitmq Lolitra generates a deadletter exchange and queues to handle dead letters and will be aware about connections issues, reconnecting on every failure.
Deadletter manual handling With lolitra you can recover dead letter message with irb or rails console.
Lolitra::subscribers
will return the available handlers
Lolitra::process_deadletters(DevicesHandler)
will process all dead letter from DevicesHandler until found an exception Fail recover deadletter will reenqueue to dead letter queue
Lolitra::remove_next_deadletter(DeviceHandler)
Will remove next deadletter without doing anything
Lolitra::purge_deadletters(DeviceHandler)
Will remove all deadletters without doing anything
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request