Overview
本指南向您展示如何使用 Rust 驱动程序监控 MongoDB 实例、副本集或分片集群中的拓扑结构事件。当您连接到的实例或集群的状态发生任何变化时,驱动程序会创建拓扑结构事件,也称为服务器发现和监控 (SDAM) 事件。
您可以使用有关应用程序中拓扑更改的信息,也可以监控集群更改以详细了解它们如何影响应用程序。
本指南包括以下部分:
事件描述
您可以订阅以下一个或多个 SDAM 事件:
事件名称 | 说明 |
---|---|
当实例状态发生变化时创建,例如当副本集成员从从节点变为主节点时。 | |
在打开与实例(例如副本集成员)的连接时创建。 | |
在与实例(例如副本集成员)的连接关闭时创建。 | |
在拓扑结构发生更改时创建,例如选举新的主节点时或 | |
在驱动程序尝试连接到实例之前创建。 | |
在拓扑结构中的所有实例连接关闭后创建。 | |
在驱动程序向实例发出 | |
当 | |
当针对 MongoDB 实例的 |
事件订阅示例
您可以通过在应用程序中订阅一个或多个 SDAM 事件来访问这些事件。 以下示例连接到 MongoDB 部署并订阅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
示例事件文档
以下部分显示了每种类型的 SDAM 事件的输出示例。
ServerDescriptionChangedEvent
ServerDescriptionChangedEvent { address: ..., topology_id: ..., previous_description: ..., new_description: ..., }
ServerOpeningEvent
ServerOpeningEvent { address: ..., topology_id: ..., }
ServerClosedEvent
ServerClosedEvent { address: ..., topology_id: ..., }
TopologyDescriptionChangedEvent
TopologyDescriptionChangedEvent { topology_id: ..., previous_description: ..., new_description: ..., }
TopologyOpeningEvent
TopologyOpeningEvent { topology_id: ..., }
TopologyClosedEvent
TopologyClosedEvent { topology_id: ..., }
ServerHeartbeatStartedEvent
ServerHeartbeatStartedEvent { server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerHeartbeatSucceededEvent
ServerHeartbeatSucceededEvent { duration: ..., reply: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerHeartbeatFailedEvent
ServerHeartbeatFailedEvent { duration: ..., failure: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
更多信息
要了解有关监控 MongoDB 部署的更多信息,请参阅如何监控 MongoDB一文。
要学习;了解有关连接到MongoDB的更多信息,请参阅连接指南。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: