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