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

我正在使用文档中描述的node-resque API。 每当我执行一个入队,一个新的客户端连接确认CLIENT LIST被创build。 为什么不可能仅仅通过一个连接来完成这一切?

 // 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块的末尾再次closures连接。

除非closures它,否则“连接”function不会closures。 但是你可以连接一次,然后在连接callback之外排队。 应该不需要多次调用连接,只需要在开始添加作业之前确保连接已经build立。 此方法不会生成与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