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.