MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Reconecte-se de forma confiável ao MongoDB


Existem 2 opções de conexão que controlam como o driver mongo nodejs se reconecta após a falha da conexão
  • reconnectTries:tentativa de reconectar #vezes (padrão 30 vezes)
  • reconnectInterval:o servidor aguardará # milissegundos entre as tentativas (padrão 1000 ms)

referência nos documentos do driver mongo

O que significa que o mongo continuará tentando se conectar 30 vezes por padrão e aguardará 1 segundo antes de cada tentativa. É por isso que você começa a ver erros após 30 segundos.

Você deve ajustar esses 2 parâmetros com base em suas necessidades, como este exemplo.
var MongoClient = require('mongodb').MongoClient,
    f = require('util').format;

MongoClient.connect('mongodb://localhost:27017/test', 
    {
        // retry to connect for 60 times
        reconnectTries: 60,
        // wait 1 second before retrying
        reconnectInterval: 1000
    },

    function(err, db) {
        var col = db.collection('t');

        setInterval(function() {
            col.insert({
                a: 1
            }, function(err, r) {
                console.log("insert")
                console.log(err)

                col.findOne({}, function(err, doc) {
                    console.log("findOne")
                    console.log(err)
                });
            })
        }, 1000)
    });

Isso tentará 60 vezes em vez do padrão 30, o que significa que você começará a ver erros após 60 segundos quando parar de tentar se reconectar.

Nota lateral:se você quiser evitar que o aplicativo/solicitação espere até a expiração do período de reconexão, você deve passar a opção bufferMaxEntries: 0 . O preço disso é que as solicitações também são abortadas durante pequenas interrupções na rede.