node.js - 如何在多个 docker 容器从 redis kue nodejs 消耗时一次处理单个作业
问题描述
我有多个 docker 容器,它们使用来自同一个 redis kue 队列的作业。问题是他们从事同样的工作。我的需要是在容器上工作,然后在完成其他容器工作后完成工作。作业的顺序很重要。
如果我不能在 redis kue 中做到这一点,但可以使用其他队列管理器(如 kafka),它也会很好
解决方案
我所做的是使用开关盒保持状态机:
var index;
function whatever (){
if (typeof state === 'undefined') {
state = 0;
}
switch (state) {
case 0:
// Do whatever stuff needed;
state++;
break;
case 1:
// Do whatever stuff needed;
state++;
break;
// Keep adding states
case (last):
// Do whatever stuff needed;
state = 0; // if you need to reset state machine
break;
}
}
您可以做的另一件事是使用Async,它已在此站点中多次介绍