MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Riconnetti in modo affidabile a MongoDB

Ci sono 2 opzioni di connessione che controllano come il driver mongo nodejs si riconnette dopo che la connessione non riesce

  • reconnectTries:tenta di riconnettersi #times (predefinito 30 volte)
  • reconnectInterval:il server attende # millisecondi tra i tentativi (predefinito 1000 ms)

riferimento sui documenti dei driver mongo

Ciò significa che mongo continuerà a tentare di connettersi 30 volte per impostazione predefinita e attenderà 1 secondo prima di ogni nuovo tentativo. Ecco perché inizi a vedere gli errori dopo 30 secondi.

Dovresti modificare questi 2 parametri in base alle tue esigenze come questo esempio.

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)
    });

Questo proverà 60 volte invece dei 30 predefiniti, il che significa che inizierai a vedere gli errori dopo 60 secondi quando smetterà di tentare di riconnettersi.

Nota a margine:se vuoi evitare che l'app/richiesta attenda fino alla scadenza del periodo di riconnessione devi passare l'opzione bufferMaxEntries: 0 . Il prezzo è che le richieste vengono annullate anche durante brevi interruzioni della rete.