如何等待Redis连接?

时间:2016-08-13 03:33:20

标签: node.js redis queue kue

我目前正在尝试使用Node.js Kue处理队列中的作业,但我相信我做得不对。

确实,我现在的工作方式,我有两种不同的服务(在这种情况下,我使用Docker Compose运行):一个使用Express构建的Web API,将作业发送到队列,一个处理模块。这里的问题是处理模块。

我将其编码如下:

var kue = require('kue');
var config = require('./config');

var queue = kue.createQueue({
    prefix: config.redis.queuePrefix,
    redis: {
        port: config.redis.port,
        host: config.redis.host
    }
});

queue.process('jobType', function (job, done) {
    // do processing here...
});

当我们使用Node运行它时,它就坐在那里等待队列上的事情进行处理。

然而,有两个问题:

  1. 在运行此模块之前,需要Redis可用。如果我们在没有Redis的情况下运行它,它会崩溃,因为无法访问主机并结束该过程。

  2. 如果Redis突然变得不可用,处理模块也会崩溃,因为它无法阻止连接并且进程被终止。

  3. 如何避免这些问题?

    我的猜测是我应该以某种方式制作代码"等待"对于Redis,但我不知道如何做到这一点。

    在这种情况下如何做到这一点?

0 个答案:

没有答案