Overview
このガイドでは、Rust ドライバーを使用して MongoDB インスタンス、レプリカセット、またはシャーディングされたクラスター内のトポロジー イベントを監視する方法を説明します。 ドライバーは、接続しているインスタンスまたはクラスターの状態が変更されたときに、サーバー検出とモニタリング(SDAM)イベントとも呼ばれるトポロジー イベントを作成します。
アプリケーション内のトポロジーの変更に関する情報を使用することも、クラスターの変更を監視して、アプリケーションにどのように影響するかをより詳しく知ることもできます。
このガイドには、次のセクションが含まれています。
イベントの説明では、ドライバーが生成できる SDAM イベントについて説明します
「イベント サブスクリプションの例」では、SDAM イベントをサブスクライブする方法を示すサンプル コードが提供されています
サンプルイベント ドキュメントは、各 SDAM イベントのサンプルを提供します
追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します
イベントの説明
次の SDAM イベントの 1 つ以上にサブスクライブできます。
イベント名 | 説明 |
|---|---|
レプリカセット ノードがセカンダリからプライマリに変更された場合など、インスタンス状態が変更されたときに作成されます。 | |
レプリカセット ノードなどの インスタンスへの接続が開いたときに作成されます。 | |
レプリカセット ノードなどのインスタンスへの接続が閉じたときに作成されます。 | |
新しいプライマリの選出がある場合や | |
ドライバーが インスタンスに接続しようとする前に作成されます。 | |
トポロジー内のすべてのインスタンス接続が閉じた後に作成されます。 | |
ドライバーが インスタンスに | |
| |
MongoDB インスタンスに対する |
イベント サブスクリプションの例
アプリケーションでサブスクライブすることで、1 つ以上の 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 イベントのタイプごとのサンプル出力を示しています。
Server Description ChangedEvent
ServerDescriptionChangedEvent { address: ..., topology_id: ..., previous_description: ..., new_description: ..., }
ServerOpenEvent
ServerOpeningEvent { address: ..., topology_id: ..., }
ServerClosedEvent
ServerClosedEvent { address: ..., topology_id: ..., }
トポロジーの説明を変更したイベント
TopologyDescriptionChangedEvent { topology_id: ..., previous_description: ..., new_description: ..., }
トポロジーを開くイベント
TopologyOpeningEvent { topology_id: ..., }
トポロジーが閉じたイベント
TopologyClosedEvent { topology_id: ..., }
ServerHeartbeatStartedEvent
ServerHeartbeatStartedEvent { server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerハートビートSucceededEvent
ServerHeartbeatSucceededEvent { duration: ..., reply: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
ServerハートビートFailedEvent
ServerHeartbeatFailedEvent { duration: ..., failure: ..., server_address: ..., awaited: false, driver_connection_id: 12, server_connection_id: ..., }
詳細情報
MongoDB 配置のモニタリングの詳細については、「 MongoDB をモニタリングする方法 」に関する記事を参照してください。
MongoDB への接続の詳細については、「 接続ガイド 」を参照してください。
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。