sql >> Base de Datos >  >> NoSQL >> MongoDB

Vuelva a conectarse de manera confiable a MongoDB

Hay 2 opciones de conexión que controlan cómo el controlador mongo nodejs se vuelve a conectar después de que falla la conexión

  • intentos de reconexión:intento de reconexión #veces (predeterminado 30 veces)
  • reconnectInterval:el servidor esperará # milisegundos entre reintentos (predeterminado 1000 ms)

referencia en los documentos del controlador mongo

Lo que significa que mongo seguirá intentando conectarse 30 veces de forma predeterminada y esperará 1 segundo antes de cada reintento. Por eso empiezas a ver errores después de 30 segundos.

Debe modificar estos 2 parámetros según sus necesidades, como esta muestra.

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

Esto intentará 60 veces en lugar de las 30 predeterminadas, lo que significa que comenzará a ver errores después de 60 segundos cuando deje de intentar volver a conectarse.

Nota al margen:si desea evitar que la aplicación/solicitud espere hasta el vencimiento del período de reconexión, debe pasar la opción bufferMaxEntries: 0 . El precio de esto es que las solicitudes también se cancelan durante breves interrupciones de la red.