NewGoroutine
API を使用して非同期セグメントをトレースする機能は、 Go エージェント バージョン 2.6.0 以降で利用できます。バージョン 2.6.0 以降を使用していない場合は、Go エージェントを最新バージョンに更新してください。
NewGoroutine(ニューゴルーチン
Transaction.NewGoroutine() Transaction
メソッドにより、トランザクションは複数のゴルーチンでセグメントを作成できます。
NewGoroutine
Transaction
への新しい参照を返します。セグメントを作成する別のゴルーチンにTransaction
を渡すときはいつでも、これを呼び出す必要があります。各セグメントを作成するゴルーチンには、独自のTransaction
参照が必要です。他のゴルーチンが開始する前または後にこれを呼び出すかどうかは問題ではありません。
すべてのTransaction
メソッドは、任意のTransaction
参照で使用できます。いずれかのゴルーチンでEnd()
が呼び出されると、 Transaction
は終了します。
新しいTransaction
参照を別のゴルーチンに直接渡す例:
go func(txn *newrelic.Transaction) { defer txn.StartSegment("async").End() time.Sleep(100 * time.Millisecond)}(txn.NewGoroutine())
チャネルの新しいTransaction
参照を別のゴルーチンに渡す例:
ch := make(chan *newrelic.Transaction)go func() { txn := <-ch defer txn.StartSegment("async").End() time.Sleep(100 * time.Millisecond)}()ch <- txn.NewGoroutine()