senecajs / seneca-redis-pubsub-transport

Seneca micro-services message transport over Redis pubsub
MIT License
16 stars 20 forks source link

Seneca

A Seneca.js transport plugin for Redis

seneca-redis-pubsub-transport

npm version Build Status Coverage Status Dependency Status Gitter

js-standard-style

A transport module that uses redis as it's engine. It may also be used as an example on how to implement a transport plugin for Seneca.

Note: This is broadcast transport. All subscribed micro-services receive all messages.

If you are new to Seneca in general, please take a look at senecajs.org. We have everything from tutorials to sample apps to help get you up and running quickly.

If you're using this module, and need help, you can:

Seneca compatibility

Supports Seneca versions 1.x - 3.x

Install

To install, simply use npm. Remember you will need to install Seneca.js if you haven't already.


npm install seneca --save
npm install seneca-redis-pubsub-transport --save

In order to use this transport, you need to have a redis daemon running. The deamon and instructions on how to install can be found on the redis install page.

Quick Example

require('seneca')()
  .use('seneca-redis-transport')
  .add('foo:two', function(args, done) {done(null, {bar:args.bar})})
  // if you need this micro-service to publish & subscribe to commands add client & listen 
  .client({type:'redis'})  // add client to be able this micro-service to publish
  .listen({type:'redis'}) // add listen to be able this micro-service to subscribe

Running Examples

In order to run the examples we provide the required docker configuration in docker-compose.yml and the folder docker. Just run docker-compose up in the root folder and it should bring up a redis server. Please be aware that if you are using docker-machine the ip running the redis server is the ip of your docker-machine.

In order to find the ip of your docker-machine just execute:

docker-machine ip <your-docker-machine-name>

Example Using Redis Server Url

require('seneca')({
  transport: {
    redis: {
      // you can use The URL of the Redis server. Format:-
      url: "[redis:]//[[user][:password@]][host][:port][/db-number][?db=db-number[&password=bar[&option=value]]]"
    }
  }
})
.use('seneca-redis-transport')

(More info available About Url Format at IANAl ).

Contributing

The Senecajs org encourages open participation. If you feel you can help in any way, be it with documentation, examples, extra testing, or new features please get in touch.

License

Copyright Richard Rodger and other contributors 2014 - 2016, Licensed under MIT.