sql >> Database >  >> NoSQL >> MongoDB

Maak op betrouwbare wijze opnieuw verbinding met MongoDB

Er zijn 2 verbindingsopties die bepalen hoe het stuurprogramma van de mongo nodejs opnieuw verbinding maakt nadat de verbinding is mislukt

  • reconnectTries:probeer #times opnieuw te verbinden (standaard 30 keer)
  • reconnectInterval:Server wacht # milliseconden tussen nieuwe pogingen (standaard 1000 ms)

referentie op Mongo-stuurprogrammadocumenten

Dat betekent dat mongo standaard 30 keer blijft proberen verbinding te maken en 1 seconde wacht voor elke nieuwe poging. Daarom begin je na 30 seconden fouten te zien.

Je moet deze 2 parameters aanpassen op basis van je behoeften, zoals dit voorbeeld.

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

Dit zal 60 keer proberen in plaats van de standaard 30, wat betekent dat je na 60 seconden fouten zult zien wanneer het stopt met proberen opnieuw verbinding te maken.

Sidenote:als je wilt voorkomen dat de app/verzoek wacht tot het verstrijken van de herverbindingsperiode, moet je de optie bufferMaxEntries: 0 doorgeven . De prijs hiervoor is dat verzoeken ook worden afgebroken tijdens korte netwerkonderbrekingen.



  1. Robuuste berichtserialisatie in Apache Kafka met behulp van Apache Avro, deel 1

  2. Maak een online voedselwinkelwebsite met Angular, NodeJS, Express en MongoDB

  3. Hoe TTL definiëren voor redis-streams?

  4. Upgraden van oudere mongo-database na onbedoelde upgrade van mongo-versie