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
varconfig={port : 0000,host : 'server.redistogo.com',pass : 'yourcrazylookingkey'};varaPublisher=newredmess.Publisher(config,'pub_name');// Send a message to channel1varobj1={'some': 'object'};aPublisher.publish('test_pipe','channel1',obj1,function(err,res){// This callback is optional });// Send a message to channel2varobj2={'someother': 'object'};aPublisher.publish('test_pipe','channel2',obj2);varconfig={port : 0000,host : 'server.redistogo.com',pass : 'yourcrazylookingkey'};// To respond to all channels on test_pipe, omit the fourth parameter 'channels'varaSubscriber=newredmess.Subscriber(config,'sub_name','test_pipe');aSubscriber.on('default',function(data){// Do something interesting with the messageconsole.log('Doing the default action for: '+JSON.stringify(data));// Listen for next messageaSubscriber.next();});// Start listeningaSubscriber.start();// To respond to specific channels on test_pipevarchannels=['channel1','channel2'];varbSubscriber=newredmess.Subscriber(config,'sub_name','test_pipe',channels);bSubscriber.on('channel1',function(data){// Do something interesting with the messageconsole.log('channel1: '+JSON.stringify(data));// Listen for next messagebSubscriber.next();});bSubscriber.on('channel2',function(data){// Do something interesting with the messageconsole.log('channel2: '+JSON.stringify(data));// Listen for next messagebSubscriber.next();});bSubscriber.on('default',function(data){// Do something interesting with the messageconsole.log('Doing the default action for: '+JSON.stringify(data));// Listen for next messagebSubscriber.next();});// Start listeningbSubscriber.start();This is based on and essentially a highly simplified version of node-rqueue (https://github.com/votizen/node-rqueue) by Tim-Smart.