From a892ffb9da26f60edc90191fab85f46d379e7491 Mon Sep 17 00:00:00 2001 From: Pedro Teixeira Date: Sun, 11 Sep 2011 00:28:49 +0100 Subject: [PATCH] first commit --- .gitignore | 2 ++ README.md | 3 +++ index.js | 31 +++++++++++++++++++++++++++++ package.json | 19 ++++++++++++++++++ test.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package.json create mode 100644 test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32547ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +dump.rb +node_modules diff --git a/README.md b/README.md new file mode 100644 index 0000000..59bcc72 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# banzai-redis + +Redis queueing plugin module for Banzai. \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..9ce1070 --- /dev/null +++ b/index.js @@ -0,0 +1,31 @@ +var kue = require('kue') + , redis = require('redis'); + +module.exports = function(config) { + var jobs; + + config = config || {}; + + kue.redis.createClient = function() { + var client = redis.createClient(config.port || 6379, config.host || '127.0.0.1'); + if (config.password) { client.auth(config.password); } + return client; + }; + + jobs = kue.createQueue(); + + function push(type, job, done) { + jobs.create(type, job).save(done); + }; + + function pop(type, callback) { + jobs.process(type, function(job, done) { + callback(job.data, done); + }); + } + + return { + push: push + , pop: pop + } +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..7af17a2 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ "name" : "banzai-redis" +, "description" : "Redis queueing plugin module for Banzai" +, "tags" : ["ETL", "pipeline", "document", "state machine", "redis", "queue", "banzai"] +, "version" : "0.1.0" +, "author" : "Pedro Teixeira " +, "repository" : + { "type" : "git" + , "url" : "http://github.com/pgte/banzai-redis.git" + } +, "bugs" : + { "web" : "http://github.com/pgte/banzai-redis/issues" } +, "engines" : ["node >= 0.4.10"] +, "main" : "./index" +, "dependencies": { + "kue": "0.2.0" + , "redis": "0.6.0" +} +, "scripts": { "test": "make" } +} \ No newline at end of file diff --git a/test.js b/test.js new file mode 100644 index 0000000..382f042 --- /dev/null +++ b/test.js @@ -0,0 +1,56 @@ +var queue = require('./')() + , assert = require('assert'); + +setTimeout(function() { + process.exit(); +}, 5000) + +exports.push_then_pop = function(done) { + var job = {a: 1, b: 2} + , cb1 = false; + + queue.push('test1', job); + queue.pop('test1', function(retjob, done) { + assert.ok(! cb1); + assert.eql(job, retjob); + cb1 = true; + done(); + }); + + done(function() { + assert.ok(cb1); + }) +}; + +exports.pop_then_push = function(done) { + var job = {a: 2, b: 2} + , cb1 = false; + + queue.pop('test2', function(retjob, done) { + assert.ok(! cb1); + assert.eql(job, retjob); + cb1 = true; + done(); + }); + queue.push('test2', job); + + done(function() { + assert.ok(cb1); + }) +}; + +exports.pop_no_push = function(done) { + var job = {a: 3, b: 2} + , cb1 = false; + + queue.pop('test3', function(retjob, done) { + assert.ok(! cb1); + assert.eql(job, retjob); + cb1 = true; + done(); + }); + + done(function() { + assert.ok(! cb1); + }) +}; \ No newline at end of file