Сохранить в БД после того, как сервис был недоступен в течение определенного времени, используя RabbitMQ - PullRequest
0 голосов
/ 25 февраля 2019

Я кодирую промежуточное ПО, которое подключается к разным сервисам, я использую rabbitmq для постановки в очередь сообщений, которые должны быть отправлены этим сервисам.Если служба недоступна, сообщение ставится в очередь.Это работает, как и ожидалось, но здесь возникает проблема, мне нужно сохранить в базе данных все сообщения, которые были поставлены в очередь, когда служба была недоступна в течение 24 часов.Каков наилучший подход?

Это то, что я имею до сих пор:

//check if service is available
if (await isReachable(url)) {
    //customer executes process
    try {
        logger.inf.info(`${url} is available, consuming end-point`);
        consumer.consume(queue, conn);
    } catch (err) {
        logger.err.error(err);
        throw new Error(err);
    }
} else {
    //service has not been available for 24 hours
    if (difTime >= oneDay) {
        try {
            logger.inf.info(`Save requests to db`);
            //reset time
            difTime = 0;
            consumer.saveToDB(queue, conn);
        } catch (err) {
            logger.err.error(err);
            throw new Error(err);
        }
    }
    logger.err.error(`${url} is not available, queueing request`);
}

Я использую узел 10, экспресс 4 и amqplib.

...