Javascript 如何在节点重置中重新使用连接?

Javascript 如何在节点重置中重新使用连接?,javascript,node.js,redis,resque,Javascript,Node.js,Redis,Resque,我正在使用文档中描述的API。每次执行排队时,都会创建一个新的客户端连接,该连接已通过客户端列表确认。为什么不可能只在一个连接上完成这一切 // Initialize in the beginning and making queue globally accessible var queue = new NR.queue({connection: connectionDetails}, jobs); queue.on('error', function(error){ console.log(

我正在使用文档中描述的API。每次执行排队时,都会创建一个新的客户端连接,该连接已通过
客户端列表确认。为什么不可能只在一个连接上完成这一切

// Initialize in the beginning and making queue globally accessible
var queue = new NR.queue({connection: connectionDetails}, jobs);
queue.on('error', function(error){ console.log(error); });

// calling this multiple times
queue.connect(function(){
  queue.enqueue('math', "add", [1,2]);
  queue.enqueue('math', "add", [1,2]);
  queue.enqueue('math', "add", [2,3]);
  queue.enqueueIn(3000, 'math', "subtract", [2,1]);
});

我是误用了API还是API中存在缺陷?您可能希望在
connect
块结束时,它会再次关闭连接。

除非您将其关闭,“connect”功能不会关闭。但您可以连接一次,然后在连接回调外部排队。不需要多次调用connect,只需在开始添加作业之前确保已建立连接。此方法不会产生到Redis的新连接

var connected = false;
queue.connect(function() {
    connected = true;
});

function addJobToQueue(job) {
    if (connected) {
        queue.enqueue(job[0], job[1], job[2]);
    } else {
        setTimeout(addJobToQueue.bind(null, job), 100);
    }
}

addJobToQueue(['math', "add", [1, 2]]);
addJobToQueue(['math', "add", [2, 2]]);
addJobToQueue(['math', "add", [3, 2]]);
//..etc

嘿,你明白了吗?我一直面临着同样的问题。。