messageq

A reliable delivery pub/sub messaging system.

npm install messageq
55 downloads in the last month

messageq Build Status

A simple pub/sub system that uses reliable task queues for delivery. It uses relyq (simple Redis-backed reliable task queues) to establish reliable messaging. It also provides a pub/sub interface for reliable messaging by adding a discovery service backed by any database or service using a modular system.

Operation

Install:

npm install messageq

Usage:

var redis = require('redis'),
  cli = redis.createClient();

var messageq = require('messageq'),
  mq = new messageq.RedisMQ(cli, {prefix: 'my-endpoint', discovery_prefix: 'my-queue-system'}); // see options below

mq.subscribe('channel-name' [, function (message) {...}]);
mq.on('message:channel-name', function (message) {...});

mq.publish('channel-name', {my: 'message'}, function (err) {...});

Options:

Note that all options can be passed in at create time. Some, which apply to subscriptions only, can be overridden or set at subscribe time.

  • prefix: 'my-endpoint' (required) - The redis key prefix for the sub-queues.
  • delimeter: '|' (default: ':') - The redis key delimeter for the sub-queues and discovery prefix if using RedisMQ.
  • idfield: 'tid' (default: 'id') - The field of the task objects where the ID can be found.
  • ensureid: false (default: true) - Adds an ID to the object if not there.
  • ttl: 5000 (default: 5s (in ms)) - Time between subscriber lookups

  • Q: relyq.RedisJsonQ (defaults to RedisJsonQ) A relyq type to use as the sub-queues backend. Each one has specific options (overridable at subscribe time) that you should check out before continuing.

These options can be overridden at subscribe time:

  • max_out: 10 (default: 0/infinity) Max number of message events to fire concurrently.
  • clean_finish: true (default: true) Does not keep successfully finished messages. Set to 'keep_storage' if you wish to keep them in storage but still remove from the queue.

In addition, the Discovery Backends have their own options (see below).

Tests

npm install -g nodeunit
npm test

Discovery Backends

The messageq system can use any of the following backends, which are subclasses of the master type, so each represents a fully functional messageq system type.

Redis

The Redis backend is the primary suggested one, because of its proximity to the queues.

mq = new messageq.RedisMQ(cli, options);

Options:

  • discovery_prefix: 'my-queue-system' (required) - The redis key prefix for the discovery backend

License

See LICENSE file.

npm loves you