Redis Pub/Sub-esque implementation with persistence. A message queue for Redis in Node.js that mimics pub/sub functionality but uses Redis lists to enable persistence. Designed to separate background processing from a web app - just drop a message from the web app to a different node app running elsewhere.
Note that this is currently under development and there are likely to be bugs.
- npm install redmess
- configure 'config' in test/publish.js and test/subscribe.js to reach your redis server
- node test/subscribe.js
- node test/publish.js (in separate terminal window)
- check your console to verify output
var config = {
port : 0000,
host : 'server.redistogo.com',
pass : 'yourcrazylookingkey'
};
var aPublisher = new redmess.Publisher(config, 'pub_name');
// Send a message to channel1
var obj1 = { 'some': 'object' };
aPublisher.publish('test_pipe', 'channel1', obj1, function (err, res) {
// This callback is optional
});
// Send a message to channel2
var obj2 = { 'someother': 'object' };
aPublisher.publish('test_pipe', 'channel2', obj2);
var config = {
port : 0000,
host : 'server.redistogo.com',
pass : 'yourcrazylookingkey'
};
// To respond to all channels on test_pipe, omit the fourth parameter 'channels'
var aSubscriber = new redmess.Subscriber(config, 'sub_name', 'test_pipe');
aSubscriber.on('default', function (data) {
// Do something interesting with the message
console.log('Doing the default action for: ' + JSON.stringify(data));
// Listen for next message
aSubscriber.next();
});
// Start listening
aSubscriber.start();
// To respond to specific channels on test_pipe
var channels = ['channel1', 'channel2'];
var bSubscriber = new redmess.Subscriber(config, 'sub_name', 'test_pipe', channels);
bSubscriber.on('channel1', function (data) {
// Do something interesting with the message
console.log('channel1: ' + JSON.stringify(data));
// Listen for next message
bSubscriber.next();
});
bSubscriber.on('channel2', function (data) {
// Do something interesting with the message
console.log('channel2: ' + JSON.stringify(data));
// Listen for next message
bSubscriber.next();
});
bSubscriber.on('default', function (data) {
// Do something interesting with the message
console.log('Doing the default action for: ' + JSON.stringify(data));
// Listen for next message
bSubscriber.next();
});
// Start listening
bSubscriber.start();
This is based on and essentially a highly simplified version of node-rqueue (https://github.com/votizen/node-rqueue) by Tim-Smart.