Il existe 2 options de connexion qui contrôlent la manière dont le pilote mongo nodejs se reconnecte après l'échec de la connexion
- reconnectTries :tente de se reconnecter #fois (par défaut 30 fois)
- reconnectInterval :le serveur attendra # millisecondes entre les tentatives (1 000 ms par défaut)
référence sur la documentation du pilote mongo
Ce qui signifie que mongo continuera à essayer de se connecter 30 fois par défaut et attendra 1 seconde avant chaque nouvelle tentative. C'est pourquoi vous commencez à voir des erreurs après 30 secondes.
Vous devez ajuster ces 2 paramètres en fonction de vos besoins, comme cet exemple.
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)
});
Cela essaiera 60 fois au lieu des 30 par défaut, ce qui signifie que vous commencerez à voir des erreurs après 60 secondes lorsqu'il cessera d'essayer de se reconnecter.
Sidenote :si vous souhaitez empêcher l'application/requête d'attendre jusqu'à l'expiration de la période de reconnexion, vous devez passer l'option bufferMaxEntries: 0
. Le prix à payer est que les requêtes sont également abandonnées lors de courtes interruptions du réseau.