57 lines
2.6 KiB
Go
57 lines
2.6 KiB
Go
|
// Copyright (C) MongoDB, Inc. 2017-present.
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||
|
// not use this file except in compliance with the License. You may obtain
|
||
|
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
// Package event is a library for monitoring events from the MongoDB Go
|
||
|
// driver. Monitors can be set for commands sent to the MongoDB cluster,
|
||
|
// connection pool changes, or changes on the MongoDB cluster.
|
||
|
//
|
||
|
// Monitoring commands requires specifying a CommandMonitor when constructing
|
||
|
// a mongo.Client. A CommandMonitor can be set to monitor started, succeeded,
|
||
|
// and/or failed events. A CommandStartedEvent can be correlated to its matching
|
||
|
// CommandSucceededEvent or CommandFailedEvent through the RequestID field. For
|
||
|
// example, the following code collects the names of started events:
|
||
|
//
|
||
|
// var commandStarted []string
|
||
|
// cmdMonitor := &event.CommandMonitor{
|
||
|
// Started: func(_ context.Context, evt *event.CommandStartedEvent) {
|
||
|
// commandStarted = append(commandStarted, evt.CommandName)
|
||
|
// },
|
||
|
// }
|
||
|
// clientOpts := options.Client().ApplyURI("mongodb://localhost:27017").SetMonitor(cmdMonitor)
|
||
|
// client, err := mongo.Connect(context.Background(), clientOpts)
|
||
|
//
|
||
|
// Monitoring the connection pool requires specifying a PoolMonitor when constructing
|
||
|
// a mongo.Client. The following code tracks the number of checked out connections:
|
||
|
//
|
||
|
// var int connsCheckedOut
|
||
|
// poolMonitor := &event.PoolMonitor{
|
||
|
// Event: func(evt *event.PoolEvent) {
|
||
|
// switch evt.Type {
|
||
|
// case event.GetSucceeded:
|
||
|
// connsCheckedOut++
|
||
|
// case event.ConnectionReturned:
|
||
|
// connsCheckedOut--
|
||
|
// }
|
||
|
// },
|
||
|
// }
|
||
|
// clientOpts := options.Client().ApplyURI("mongodb://localhost:27017").SetPoolMonitor(poolMonitor)
|
||
|
// client, err := mongo.Connect(context.Background(), clientOpts)
|
||
|
//
|
||
|
// Monitoring server changes specifying a ServerMonitor object when constructing
|
||
|
// a mongo.Client. Different functions can be set on the ServerMonitor to
|
||
|
// monitor different kinds of events. See ServerMonitor for more details.
|
||
|
// The following code appends ServerHeartbeatStartedEvents to a slice:
|
||
|
//
|
||
|
// var heartbeatStarted []*event.ServerHeartbeatStartedEvent
|
||
|
// svrMonitor := &event.ServerMonitor{
|
||
|
// ServerHeartbeatStarted: func(e *event.ServerHeartbeatStartedEvent) {
|
||
|
// heartbeatStarted = append(heartbeatStarted, e)
|
||
|
// }
|
||
|
// }
|
||
|
// clientOpts := options.Client().ApplyURI("mongodb://localhost:27017").SetServerMonitor(svrMonitor)
|
||
|
// client, err := mongo.Connect(context.Background(), clientOpts)
|
||
|
package event
|