首页 > 解决方案 > 如何在多个 docker 容器从 redis kue nodejs 消耗时一次处理单个作业

问题描述

我有多个 docker 容器,它们使用来自同一个 redis kue 队列的作业。问题是他们从事同样的工作。我的需要是在容器上工作,然后在完成其他容器工作后完成工作。作业的顺序很重要。

如果我不能在 redis kue 中做到这一点,但可以使用其他队列管理器(如 kafka),它也会很好

标签: node.jsdockerredisapache-kafkakue

解决方案


我所做的是使用开关盒保持状态机:

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,它已在此站点中多次介绍


推荐阅读