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 un evento SDAM
Los documentos de eventos de ejemplo proporcionan 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
Puedes suscribirte a uno o más de 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 suscripción a eventos
Puede acceder a uno o más eventos SDAM suscribiéndose a ellos en su aplicación. El siguiente ejemplo se conecta a una implementación de MongoDB y se suscribe al tipo de evento ServerOpeningEvent:
struct ServerOpenHandler; impl SdamEventHandler for ServerOpenHandler { fn handle_server_opening_event(&self, event: ServerOpeningEvent) { eprintln!("Server opening: {:?}", event); } } let handler: Arc<dyn SdamEventHandler> = Arc::new(ServerOpenHandler); client_options.sdam_event_handler = Some(handler); 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: