使用createClientFactory的Kue worker:可以使用仅订阅者命令

时间:2015-06-19 18:28:22

标签: javascript node.js redis kue

我正在努力让我的kue工作人员成立,并发现了一些奇怪的东西。如果我使用默认的kue redis连接创建队列,一切都很完美:

var kue = require('kue')
    , redis = require('redis');

var q = kue.createQueue();

q.process('cypher', function(job, done){});

工人完美地开始。但是,如果我尝试使用我自己的一个覆盖默认的redis连接,我会得到一个

错误:在订阅者模式下连接,只能使用订阅者命令

当执行命中下面的q.process函数时:

var kue = require('kue')
    , redis = require('redis');


var redisClient =   redis.createClient();

var q = kue.createQueue({
    redis: {
        createClientFactory: function(){

            return redisClient;
        }
    }
});

q.process('cypher', function(job, done){});

似乎没有任何意义。我想也许我提交了一个经典的异步错误,但即便如此,我也得到了同样的错误。 任何见解?

redisClient.on('connect', function () {
    console.log('gotten here!!!');
    var q = kue.createQueue({
        redis: {
            createClientFactory: function(){

                return redisClient;
            }
        }
    });

    q.process('cypher', function(job, done){});
});

1 个答案:

答案 0 :(得分:2)

每次调用工厂方法时,实际上并没有传递新客户端。从createClientFactory返回单例实例使kue对命令和pub / sub使用相同的连接,这在redis连接模式下是不可能的