MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verbinden Sie sich zuverlässig wieder mit MongoDB

Es gibt 2 Verbindungsoptionen, die steuern, wie der mongo nodejs-Treiber die Verbindung wieder herstellt, nachdem die Verbindung fehlgeschlagen ist

  • reconnectTries:#mal versuchen, die Verbindung wiederherzustellen (standardmäßig 30mal)
  • reconnectInterval:Server wartet # Millisekunden zwischen Wiederholungen (Standard 1000 ms)

Referenz auf Mongo-Treiberdokumentation

Das bedeutet, dass Mongo standardmäßig 30 Mal versucht, eine Verbindung herzustellen, und vor jedem erneuten Versuch 1 Sekunde wartet. Aus diesem Grund sehen Sie nach 30 Sekunden Fehler.

Sie sollten diese 2 Parameter basierend auf Ihren Anforderungen anpassen, wie in diesem Beispiel.

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

Dies wird 60 Mal anstelle der standardmäßigen 30 Versuche versuchen, was bedeutet, dass Sie nach 60 Sekunden Fehler sehen, wenn es aufhört, eine Verbindung herzustellen.

Nebenbemerkung:Wenn Sie verhindern möchten, dass die App/Anfrage bis zum Ablauf der Wiederverbindungsfrist wartet, müssen Sie die Option bufferMaxEntries: 0 übergeben . Der Preis dafür ist, dass Anfragen auch bei kurzen Netzunterbrechungen abgebrochen werden.