Overview
Esta guía le muestra cómo usar el controlador de Rust para monitorizar eventos de topología en una instancia de MongoDB, un conjunto de réplicas o un clúster fragmentado. El controlador crea eventos de topología, también conocidos como eventos de Descubrimiento y Monitoreo de Servidores (SDAM), cuando se produce algún cambio en el estado de la instancia o el clúster al que está conectado.
Puede utilizar información sobre los cambios de topología en su aplicación o puede monitorear los cambios del clúster para obtener más información sobre cómo afectan su aplicación.
Esta guía incluye las siguientes secciones:
Descripciones de eventos describe los eventos SDAM que el controlador puede generar.
El ejemplo desuscripción a eventos proporciona un código de muestra que muestra cómo suscribirse a eventos SDAM.
Ejemplo de documentos de eventos proporciona muestras de cada evento SDAM.
Información adicional proporciona enlaces a recursos y documentación de API para los tipos y métodos mencionados en esta guía.
Descripciones de eventos
Puede supervisar los siguientes eventos SDAM:
Nombre del evento | Descripción |
|---|---|
Se crea cuando cambia el estado de una instancia, como cuando un miembro del conjunto de réplicas cambia de secundario a principal. | |
Se crea cuando se abre una conexión a una instancia, como un miembro del conjunto de réplicas. | |
Se crea cuando se cierra una conexión a una instancia, como un miembro del conjunto de réplicas. | |
Se crea cuando cambia la descripción de la topología, como cuando hay una elección de un nuevo primario o cuando un | |
Se crea antes de que el controlador intente conectarse a una instancia. | |
Se crea después de que se cierran todas las conexiones de instancia en la topología. | |
Se crea antes de que el controlador emita un comando | |
Se crea cuando el comando | |
Se crea cuando un comando |
Ejemplo de monitoreo de eventos
Puede supervisar eventos SDAM asignando una instancia EventHandler como valor de la opción de cliente sdam_event_handler. Para construir una instancia EventHandler que procese todos los eventos SDAM, utilice el método callback() o async_callback().
El siguiente ejemplo se conecta a una implementación de MongoDB, le indica al cliente que monitoree los eventos SDAM e imprime cada evento:
let mut client_options = ClientOptions::parse("<connection string>").await?; client_options.sdam_event_handler = Some(EventHandler::callback(|ev| println!("{:?}", ev))); let client = Client::with_options(client_options)?; // ... perform actions with the client to generate events
Documentos de eventos de ejemplo
Las siguientes secciones muestran la salida de ejemplo para cada tipo de evento SDAM.
Evento de cambio de descripción del servidor
ServerDescriptionChangedEvent { address: ..., topology_id: ..., previous_description: ..., new_description: ..., }
ServerOpeningEvent
ServerOpeningEvent { address: ..., topology_id: ..., }
Evento de servidor cerrado
ServerClosedEvent { address: ..., topology_id: ..., }
Descripción de topologíaCambiadoEvento
TopologyDescriptionChangedEvent { topology_id: ..., previous_description: ..., new_description: ..., }
Evento de apertura de topología
TopologyOpeningEvent { topology_id: ..., }
Evento cerrado de topología
TopologyClosedEvent { topology_id: ..., }
ServerHeartbeatStartedEvent
ServerHeartbeatStartedEvent { server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
Evento de latido del servidor exitoso
ServerHeartbeatSucceededEvent { duration: ..., reply: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
Evento de fallo de latido del servidor
ServerHeartbeatFailedEvent { duration: ..., failure: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
Información Adicional
Para obtener más información sobre cómo monitorear una implementación de MongoDB, consulte el artículo Cómo monitorear MongoDB.
Para obtener más información sobre cómo conectarse a MongoDB, consulte Guía de conexión.
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API: