我正在使用文档中描述的node-resque
API。每次执行排队时,都会创建一个与CLIENT LIST
确认的新客户端连接。为什么不能只通过一个连接完成这项工作?
// 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
块结束时再次关闭连接。
答案 0 :(得分:1)
' 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