使用RabbitMQ在给定时间不可用后保存到数据库

时间:2019-02-25 17:59:00

标签: node.js express rabbitmq node-amqplib

我正在编码连接到不同服务的中间件,我使用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。

0 个答案:

没有答案