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()