Kue работник с помощью createClientFactory: можно использовать только команды подписчика
Я работаю над тем, чтобы мои рабочие по куе настроились и обнаружили что-то странное. Если я создаю свою очередь, используя стандартное соединение 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 ответ
Вы фактически не передаете нового клиента каждый раз, когда вызывается ваш фабричный метод. Возвращение экземпляра синглтона из createClientFactory заставляет kue использовать одно и то же соединение для команд и pub/sub, и это невозможно в режимах подключения redis