Skip to content

Instantly share code, notes, and snippets.

@troufster
Created September 30, 2010 11:47
Show Gist options
  • Save troufster/604451 to your computer and use it in GitHub Desktop.
Save troufster/604451 to your computer and use it in GitHub Desktop.
var redis = require('redis'),
client1 = redis.createClient(), client2 = redis.createClient(),
msg_count = 0, sys = require('sys');
//List of jobs to do
var _jobs = [];
for (var i = 0; i < 1000; i++) {
_jobs.push({ 'w' : 'TestWorker', 'd': { echo : 'Work for testworker!' }});
_jobs.push({ w : 'MyWorker', d: { echo : 'Work for MyWorker jao' }});
}
//Available workers
var _workers = {};
_workers['TestWorker'] = function(payload,_cb) {
console.log(payload.echo);
_cb();
};
_workers['MyWorker'] = function(payload,_cb) {
console.log("Whooa mayne! " + payload.echo);
_cb();
};
//Worker caller
var Worker = function(wname, wdata, _cb) {
_workers[wname](wdata,_cb);
};
//on client1 subscribe, let client2 publish the jobs
client1.on("subscribe", function (channel, count) {
for (var j = 0; j < _jobs.length; j++){
var w = JSON.stringify(_jobs[j]);
client2.publish("work:", w);
}
});
//On message recieved, process job
client1.on("message", function (channel, message) {
if (message !== undefined) {
var d = JSON.parse(message);
Worker(d.w, d.d, function() {
});
}
});
//Subscribe to work channel
client1.subscribe("work:");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment