Overview
本指南向您展示如何使用 Rust 驱动程序监控 MongoDB 实例、副本集或分片集群中的拓扑结构事件。当您连接到的实例或集群的状态发生任何变化时,驱动程序会创建拓扑结构事件,也称为服务器发现和监控 (SDAM) 事件。
您可以使用有关应用程序中拓扑更改的信息,也可以监控集群更改以详细了解它们如何影响应用程序。
本指南包括以下部分:
Event Descriptions describes the SDAM events that the driver can generate
Event Subscription Example provides sample code that shows how to subscribe to an SDAM event
示例事件文档提供了每个 SDAM事件的示例
附加信息提供了本指南中提到的类型和方法的资源和 API 文档链接
事件描述
您可以订阅以下一个或多个 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: ..., }
更多信息
To learn more about monitoring a MongoDB deployment, see the How to Monitor MongoDB article.
如需了解有关连接 MongoDB 的更多信息,请参阅“连接指南”。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: