messageq

0.3.1 • Public • Published

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.

Package Sidebar

Install

npm i messageq

Weekly Downloads

0

Version

0.3.1

License

MIT

Last publish

Collaborators

  • yanatan16
  • leroix
  • runningskull