MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Слушайте събития за повторно свързване в драйвера на MongoDB

Разбира се, че можеш. По принцип обаче трябва да се докоснете до EventEmitter на по-ниско ниво от основното извън MongoClient себе си.

Можете ясно да видите, че такива неща съществуват, тъй като са видими в „регистриране“, което може да бъде включено в драйвера чрез настройката:

{ "loggerLevel": "info" }

Оттогава наистина е само въпрос на докосване до действителния източник на емитер. Направих ги в следния списък, както и включих малък трик за получаване на изброените събития от даден емитент, който наистина беше използван от мен при проследяването на това:

const MongoClient = require('mongodb').MongoClient;

function patchEmitter(emitter) {
  var oldEmit = emitter.emit;

  emitter.emit = function() {
    var emitArgs = arguments;

    console.log(emitArgs);

    oldEmit.apply(emitter, arguments);
  }

}


(async function() {

  let db;

  try {

    const client = new MongoClient();

    client.on('serverOpening', () => console.log('connected') );

    db = await client.connect('mongodb://localhost/test', {
      //loggerLevel: 'info'
    });

    //patchEmitter(db.s.topology);

    db.s.topology.on('close', () => console.log('Connection closed') );
    db.s.topology.on('reconnect', () => console.log('Reconnected') );


  } catch(e) {
    console.error(e)
  }

})()

И така, тези два слушателя дефинираха:

    db.s.topology.on('close', () => console.log('Connection closed') );
    db.s.topology.on('reconnect', () => console.log('Reconnected') );

Ще се задействат, когато връзката прекъсне и когато бъде постигнато повторно свързване. Има и други неща като опити за повторно свързване, които също са в излъчвателя на събития, точно както бихте видели с loggerLevel настройката е включена.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да върна ISO формат на дата в PHP за MongoDB?

  2. Задайте място за съхранение на MongoDB, инсталиран на AWS EC2 инстанция, на EBS хранилище. И как да го възстановя, след като инстанцията е спряна/прекратена?

  3. Запитване за списък на всички отделни полета в колекцията MongoDB

  4. MongoDB $isoDayOfWeek

  5. Изтегляне на MongoDB Java