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 = cli = redis; var messageq = mq = cli prefix: 'my-endpoint' discovery_prefix: 'my-queue-system'; // see options below mq;mq; mq;
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 = cli options;
Options:
discovery_prefix: 'my-queue-system'
(required) - The redis key prefix for the discovery backend
License
See LICENSE file.