diff --git a/lib/queue.js b/lib/queue.js index 07a9517b..1942c4c0 100644 --- a/lib/queue.js +++ b/lib/queue.js @@ -21,7 +21,7 @@ module.exports = queue; function queue(options) { options = options || {}; - var channel, consumerTag; + var channel, consumerTag, ready; var emitter = _.extend(new EventEmitter(), { name: options.name, options: _.extend({}, DEFAULT_QUEUE_OPTIONS, options), @@ -38,10 +38,17 @@ function queue(options) { } function consume(callback, options) { - emitter.once("ready", function() { + if(ready){ var opts = _.extend({}, DEFAULT_CONSUME_OPTIONS, options); channel.consume(emitter.name, onMessage, opts, onConsume); - }); + } + + else { + emitter.once("ready", function() { + var opts = _.extend({}, DEFAULT_CONSUME_OPTIONS, options); + channel.consume(emitter.name, onMessage, opts, onConsume); + }); + } function onMessage(msg) { var data = parseMessage(msg); @@ -132,6 +139,7 @@ function queue(options) { function onQueue(err, info) { if (err) return bail(err); emitter.name = info.queue; + ready = true; emitter.emit("ready"); } }