mongodb-queue
Advanced tools
Comparing version 0.4.0 to 0.5.0
@@ -27,8 +27,23 @@ /** | ||
module.exports = function(mongoDbClient, name, opts, callback) { | ||
if ( !callback ) { | ||
callback = opts | ||
opts = {} | ||
} | ||
var queue = new Queue(mongoDbClient, name, opts) | ||
queue.col.ensureIndex({ visible : 1 }, function(err) { | ||
if (err) return callback(err) | ||
queue.col.ensureIndex({ ack : 1 }, { unique : true, sparse : true }, function(err) { | ||
if (err) return callback(err) | ||
callback(null, queue) | ||
}) | ||
}) | ||
} | ||
// the Queue object itself | ||
function Queue(mongoDbClient, name, opts) { | ||
if (!(this instanceof Queue)) { | ||
return new Queue(mongoDbClient, name, opts) | ||
if ( !mongoDbClient ) { | ||
throw new Error("mongodb-queue: provide a mongodb.MongoClient") | ||
} | ||
if ( !name ) { | ||
@@ -134,3 +149,1 @@ throw new Error("mongodb-queue: provide a queue name") | ||
} | ||
module.exports = Queue |
{ | ||
"name": "mongodb-queue", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "Message queues which uses MongoDB.", | ||
@@ -5,0 +5,0 @@ "main": "mongodb-queue.js", |
@@ -5,2 +5,5 @@ # mongodb-queue # | ||
A really light-weight way to create queue with a nice API if you're already | ||
using MongoDB. | ||
## Synopsis ## | ||
@@ -12,5 +15,10 @@ | ||
var mongodb = require('mongodb') | ||
var mongoDbQueue = require('mongodb-queue') | ||
var con = 'mongodb://localhost:27017/test' | ||
mongodb.MongoClient.connect(con, function(err, db) { | ||
var queue = Queue(db, 'my-queue') | ||
mongoDbQueue(db, 'my-queue', function(err, queue) { | ||
// the 'queue' | ||
}) | ||
}) | ||
@@ -56,8 +64,15 @@ ``` | ||
To create a queue, just call `new` (and if you forget to do that, we'll do it for you) | ||
and pass it the MongoClient, a name and an optional set of options. These are equivalent: | ||
To create a queue, call the exported function with the `MongoClient`, the name | ||
and a set of opts. The MongoDB collection used is the same name as the name | ||
passed in: | ||
``` | ||
var q1 = new Queue(db, 'a-queue') | ||
var q2 = Queue(db, 'a-queue') | ||
var mongoDbQueue = require('mongodb-queue') | ||
mongoDbQueue(db, 'a-queue', function(err, queue) { | ||
// a queue | ||
}) | ||
mongoDbQueue(db, 'a-queue', function(err, queue) { | ||
// another queue which uses the same collection as above | ||
}) | ||
``` | ||
@@ -70,3 +85,5 @@ | ||
``` | ||
var imageResizeQueue = Quene(db, 'resize-queue', { visibility : 30, delay : 15 }) | ||
mongoDbQueue(db, 'resize-queue', { visibility : 30, delay : 15 }, function(err, resizeQueue) { | ||
// the resizeQueue | ||
}) | ||
``` | ||
@@ -84,4 +101,8 @@ | ||
``` | ||
var resizeQueue = Queue(db, 'resize-image') | ||
var notifyQueue = Queue(db, 'notify-owner') | ||
mongoDbQueue(db, 'resize-queue', function(err, resizeQueue) { | ||
// the resizeQueue | ||
}) | ||
mongoDbQueue(db, 'notify-queue', function(err, notifyQueue) { | ||
// the notifyQueue | ||
}) | ||
``` | ||
@@ -103,3 +124,5 @@ | ||
``` | ||
var queue = Queue(db, 'my-queue', { visibility : 15 }) | ||
mongoDbQueue(db, 'queue', { visibility : 15 }, function(err, queue) { | ||
// the queue | ||
}) | ||
``` | ||
@@ -122,3 +145,5 @@ | ||
``` | ||
var queue = Queue(db, 'my-queue', { delay : 10 }) | ||
mongoDbQueue(db, 'queue', { delay : 10 }, function(err, queue) { | ||
// the queue | ||
}) | ||
``` | ||
@@ -145,2 +170,8 @@ | ||
### 0.5.0 (2014-03-21) ### | ||
* [NEW] Now adds two indexes onto the MongoDB collection used for the message | ||
* [CHANGE] The queue is now created by calling the async exported function | ||
* [DOC] Update to show how the queues are now created | ||
### 0.4.0 (2014-03-20) ### | ||
@@ -147,0 +178,0 @@ |
@@ -1,21 +0,18 @@ | ||
var mongodb = require('mongodb') | ||
var async = require('async') | ||
var test = require('tape') | ||
var Queue = require('../') | ||
var setup = require('./setup.js') | ||
var mongoDbQueue = require('../') | ||
var conStr = 'mongodb://localhost:27017/mongodb-queue' | ||
setup(function(db) { | ||
test('first test', function(t) { | ||
var queue = Queue(db, 'default') | ||
t.ok(queue, 'Queue created ok') | ||
t.end() | ||
mongoDbQueue(db, 'default', function(err, queue) { | ||
t.ok(queue, 'Queue created ok') | ||
t.end() | ||
}) | ||
}); | ||
test('single round trip', function(t) { | ||
var queue = Queue(db, 'default') | ||
var queue | ||
var msg | ||
@@ -26,2 +23,8 @@ | ||
function(next) { | ||
mongoDbQueue(db, 'default', function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
queue.add('Hello, World!', function(err, id) { | ||
@@ -28,0 +31,0 @@ t.ok(!err, 'There is no error when adding a message.') |
@@ -5,3 +5,3 @@ var async = require('async') | ||
var setup = require('./setup.js') | ||
var Queue = require('../') | ||
var mongoDbQueue = require('../') | ||
@@ -11,3 +11,3 @@ setup(function(db) { | ||
test('delay: check messages on this queue are returned after the delay', function(t) { | ||
var queue = new Queue(db, 'delay', { delay : 3 }) | ||
var queue | ||
@@ -17,2 +17,8 @@ async.series( | ||
function(next) { | ||
mongoDbQueue(db, 'delay', { delay : 3 }, function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
queue.add('Hello, World!', function(err, id) { | ||
@@ -19,0 +25,0 @@ t.ok(!err, 'There is no error when adding a message.') |
@@ -5,3 +5,3 @@ var async = require('async') | ||
var setup = require('./setup.js') | ||
var Queue = require('../') | ||
var mongoDbQueue = require('../') | ||
@@ -12,4 +12,4 @@ var total = 250 | ||
test('add ' + total + ' messages, get ' + total + ' back', function(t) { | ||
var queue = new Queue(db, 'multi') | ||
test('multi: add ' + total + ' messages, get ' + total + ' back', function(t) { | ||
var queue | ||
var msgs = [] | ||
@@ -20,2 +20,8 @@ | ||
function(next) { | ||
mongoDbQueue(db, 'multi', function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
var i, done = 0 | ||
@@ -22,0 +28,0 @@ for(i=0; i<total; i++) { |
@@ -5,3 +5,3 @@ var async = require('async') | ||
var setup = require('./setup.js') | ||
var Queue = require('../') | ||
var mongoDbQueue = require('../') | ||
@@ -11,4 +11,3 @@ setup(function(db) { | ||
test('ping: check a retrieved message with a ping can still be acked', function(t) { | ||
var queue = new Queue(db, 'ping', { visibility : 5 }) | ||
var queue | ||
var msg | ||
@@ -19,2 +18,8 @@ | ||
function(next) { | ||
mongoDbQueue(db, 'ping', { visibility : 5 }, function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
queue.add('Hello, World!', function(err, id) { | ||
@@ -59,3 +64,2 @@ t.ok(!err, 'There is no error when adding a message.') | ||
function(err) { | ||
console.log('err:', err) | ||
if (err) t.fail(err) | ||
@@ -62,0 +66,0 @@ t.pass('Finished test ok') |
@@ -5,3 +5,3 @@ var async = require('async') | ||
var setup = require('./setup.js') | ||
var Queue = require('../') | ||
var mongoDbQueue = require('../') | ||
@@ -11,3 +11,3 @@ setup(function(db) { | ||
test('visibility: check message is back in queue after 3s', function(t) { | ||
var queue = new Queue(db, 'visibility', { visibility : 3 }) | ||
var queue | ||
@@ -17,2 +17,8 @@ async.series( | ||
function(next) { | ||
mongoDbQueue(db, 'visibility', { visibility : 3 }, function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
queue.add('Hello, World!', function(err) { | ||
@@ -58,4 +64,3 @@ t.ok(!err, 'There is no error when adding a message.') | ||
test("visibility: check that a late ack doesn't remove the msg", function(t) { | ||
var queue = new Queue(db, 'visibility', { visibility : 3 }) | ||
var queue | ||
var originalAck | ||
@@ -66,2 +71,8 @@ | ||
function(next) { | ||
mongoDbQueue(db, 'visibility', { visibility : 3 }, function(err, q) { | ||
queue = q | ||
next(err) | ||
}) | ||
}, | ||
function(next) { | ||
queue.add('Hello, World!', function(err) { | ||
@@ -68,0 +79,0 @@ t.ok(!err, 'There is no error when adding a message.') |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
25613
514
222