A reliable delivery pub/sub messaging system.
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.
npm install messageq
var redis = require'redis'cli = rediscreateClient;var messageq = require'messageq'mq = cli prefix: 'my-endpoint' discovery_prefix: 'my-queue-system'; // see options belowmqsubscribe'channel-name' ;mqon'message:channel-name' ;mqpublish'channel-name' my: 'message' ;
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).
npm install -g nodeunitnpm test
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.
The Redis backend is the primary suggested one, because of its proximity to the queues.
mq = cli options;
discovery_prefix: 'my-queue-system'(required) - The redis key prefix for the discovery backend
See LICENSE file.