1

我正在努力让我的 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){});
});
4

1 回答 1

2

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

于 2015-06-19T22:32:16.423 回答