https://github.com/unbounce/messenger
A modular inter-service messenger
https://github.com/unbounce/messenger
core-services tier-5
Last synced: about 1 year ago
JSON representation
A modular inter-service messenger
- Host: GitHub
- URL: https://github.com/unbounce/messenger
- Owner: unbounce
- License: mit
- Created: 2013-10-17T18:25:09.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2020-09-30T20:34:36.000Z (over 5 years ago)
- Last Synced: 2025-01-19T07:13:52.785Z (over 1 year ago)
- Topics: core-services, tier-5
- Language: Ruby
- Homepage:
- Size: 26.4 KB
- Stars: 0
- Watchers: 55
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Messenger
Messenger communicates between the different services and is comprised of a listener and a worker.
## Listeners
To create a listener in your application, run `rails g messenger:listener `.
Listeners must implement a `listen` method.
```Ruby
# Example app/messenger/listeners/something.rb
module Messenger
module Listeners
class Something
include Messenger::Listeners
def listen
while true do
# Get a message
message = 'something'
ensure_valid_worker
@worker.work(message)
end
end
end
end
end
```
Another example listener is the [SqsListener](https://github.com/unbounce/messenger-listeners-sqs).
## Workers
To create a listener in your application, run `rails g messenger:worker `. Workers
must implement a `work` method that accepts one parameter.
```Ruby
# Example app/messenger/workers/sidekiq.rb
module Messenger
module Workers
class Sidekiq
include Messenger::Workers
def work(message)
BlueCollarWorker.perform_async(message)
end
end
end
end
```
## Installation
Add this line to your application's Gemfile:
```Ruby
gem 'messenger', git: 'git@github.com:unbounce/messenger.git'
```
And then execute:
```
$ bundle
```
### Configuration
You must set which listener and worker the messenger will use. To create a configuration
file in your application, run `rails g messenger:install`. Set the appropriate type to your
listener or worker type. This can be a child of `Messenger::Listeners` or `Messenger::Workers`
or any other class.
```Ruby
# Example config/initializers/messenger.rb
Messenger.configure do |config|
config.listener_type = :sqs
config.worker_type = :sidekiq
end
```
Tell Rails where to find any listeners or workers you create:
```Ruby
# config/application.rb
config.autoload_paths << "#{Rails.root}/app/messenger"
```
## Usage
The messenger can be run using `rake messenger:listen` or from the console
using:
```Ruby
messenger = Messenger.new
messenger.listen
```