gpt4 book ai didi

Node.js Kue - 暂停具有多个实例的应用程序中的工作人员

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:33 26 4
gpt4 key购买 nike

当在具有多个实例(例如 docker 中的多个容器)的应用程序中使用 kue 时,所有实例都使用相同的 redis 数据库,如果您暂停一个工作程序,您是否需要在所有实例上暂停该工作程序,或者是在 redis 级别处理并因此为您处理?

https://github.com/Automattic/kue#pause-processing

queue.process('email', function(job, ctx, done){
ctx.pause( 5000, function(err){
console.log("Worker is paused... ");
setTimeout( function(){ ctx.resume(); }, 10000 );
});
});

如果我们不必使用任何实例到实例的通信来让所有工作线程暂停,那就太好了。

最佳答案

从阅读代码来看,暂停工作人员似乎只是清理该工作人员的 Redis 客户端并停止监听来自 Redis 的事件。

这是相关代码。 https://github.com/Automattic/kue/blob/master/lib/queue/worker.js#L288-L302

因此,没有什么可以阻止同一应用程序的另一个实例继续处理消息。因此,如果同一应用程序的多个实例正在运行,并且您想要暂停工作线程,则必须向应用程序的每个实例发出已发生暂停事件的信号。

我们使用 redis 中的 pubsub 功能向所有工作人员发出信号,告知他们应该暂停/恢复。

关于Node.js Kue - 暂停具有多个实例的应用程序中的工作人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29373133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com