В настоящее время я пытаюсь использовать Node.js Kue для обработки заданий в очереди, но я считаю, что я не делаю это правильно.Как подождать подключение Redis?
Действительно, как я сейчас работаю, у меня есть две разные службы (которые в этом случае я работаю с Docker Compose): один веб-API, построенный с помощью Express, отправляет задания в очередь и один модуль обработки. Проблема здесь в модуле обработки.
Я закодировал следующим образом:
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...
});
Когда мы запустим это с узлом, он сидит там ждет вещей, которые будут помещены в очередь, чтобы сделать обработку.
Есть две проблемы, однако:
Он нуждается в том, что Redis доступны перед тем запуска этого модуля. Если мы запустим это без того, что Redis уже доступен, он сработает, потому что хост недоступен и завершает процесс.
Если Redis внезапно становится недоступным, модуль обработки также выходит из строя, потому что он не может установить соединение, и процесс будет убит.
Как я могу избежать этих проблем?
Моя догадка заключается в том, что я должен каким-то образом сделать код «ожидающим» для Redis, но я понятия не имею, как это сделать.
Как это можно сделать в этом случае?