MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Reconnectez-vous de manière fiable à MongoDB

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.