Istnieją 2 opcje połączenia, które kontrolują sposób, w jaki sterownik mongo nodejs łączy się ponownie po nieudanym połączeniu
- reconnectTries:próba ponownego połączenia #razy (domyślnie 30 razy)
- reconnectInterval:Serwer będzie czekał # milisekund między kolejnymi próbami (domyślnie 1000 ms)
odniesienie do dokumentacji sterownika Mongo
Oznacza to, że mongo będzie domyślnie próbował połączyć się 30 razy i odczekać 1 sekundę przed każdą kolejną próbą. Dlatego po 30 sekundach pojawiają się błędy.
Powinieneś dostosować te 2 parametry w zależności od potrzeb, tak jak ten przykład.
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)
});
To spróbuje 60 razy zamiast domyślnych 30, co oznacza, że po 60 sekundach zaczniesz widzieć błędy, gdy przestanie próbować nawiązać połączenie.
Uwaga dodatkowa:jeśli chcesz, aby aplikacja/żądanie nie czekało do wygaśnięcia okresu ponownego połączenia, musisz przejść do opcji bufferMaxEntries: 0
. Ceną za to jest to, że żądania są przerywane również podczas krótkich przerw w sieci.