2015-06-19 10 views
1

我正在努力讓我的kue工作人員建立並發現了一些奇怪的東西。如果我使用默認的kue redis連接創建我的隊列,則一切正常:Kue worker with createClientFactory:只有訂閱者命令可以使用

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

var q = kue.createQueue(); 

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

工作人員啓動完美。但是,如果我嘗試重寫我自己的一個默認redis的連接,我得到一個

錯誤:用戶模式的連接,當執行到q只在用戶命令可用於

。處理功能如下:

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){}); 
}); 

回答

2

你實際上並沒有在你的工廠方法被調用時傳遞一個新的客戶端。從createClientFactory返回一個單例實例使得kue使用相同的連接來執行命令和pub/sub,並且這在redis連接模式下是不可能的。

+0

我應該從名稱createClientFactory知道它以及它需要一個函數的事實。儘管如此,這些文件並不是絕對清楚的。也許這個問題可以節省一些時間! –

相關問題