スパン間の親子関係を確立するには、コンテキストの伝播が実行できない状況でヘッダーを利用する必要があります。このシナリオでは、トレース ID とスパン ID がメッセージ ブローカーのヘッダー内に含まれているため、サブスクライバーは親トレース ID を使用して新しいスパンを作成できます。
次の手順で実行できます。トレース ID を使用してサブスクライバ側でコンテキストまたはスパンを構築するために使用されます:
func constructNewSpanContext(traceID string) (spanContext trace.SpanContext, err error) {
traceID, err := trace.TraceIDFromHex(traceID)
if err != nil {
return trace.SpanContext{}, err
}
return trace.NewSpanContext(trace.SpanContextConfig{
TraceID: traceID,
}), nil
}
spanContext, err := constructNewSpanContext(request.TraceID)
if err != nil {
log.Fatal(err)
}
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
requestInLoopSpan, _ := otel.Tracer("requestInLoop").Start(requestContext, "requestInLoopSpan")
これらの手順に従うと、メッセージ ヘッダーから抽出されたトレース ID を使用してサブスクライバ側で新しいスパンを正常に構築でき、サブスクライバ間の階層関係を確保できます。スパン。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3