Membina Span daripada Trace ID dalam Konteks Bukan HTTP
Apabila menyebarkan surih menggunakan pengepala dalam konteks bukan HTTP, anda perlu membina secara manual span menggunakan ID jejak dan span yang disediakan. Begini cara untuk mencapainya:
Sisi Pelanggan:
Di dalam fungsi yang mengendalikan mesej masuk dengan pengepala jejak dan rentang:
Contoh:
<code class="go">func handleIncomingMessage(request NewRequest) { traceID, err := trace.TraceIDFromHex(request.TraceID) if err != nil { fmt.Println("error: ", err) return } spanID, err := trace.SpanIDFromHex(request.SpanID) if err != nil { fmt.Println("error: ", err) return } spanContext := trace.NewSpanContext(trace.SpanContextConfig{ TraceID: traceID, SpanID: spanID, TraceFlags: 01, Remote: false, }) ctx := context.Background() ctx = trace.ContextWithSpanContext(ctx, spanContext) _, span := otel.Tracer("requestInLoop").Start(ctx, "requestInLoopSpan") span.AddEvent("processing....") }</code>
Dalam contoh ini, NewRequest ialah jenis tersuai yang mengandungi ID jejak dan rentang. Fungsi handleIncomingMessage mengambil struct NewRequest sebagai input dan mencipta span dengan jejak dan ID span yang disediakan.
Nota: Pastikan span baharu tidak dibuat jika medan IsRemote span yang disediakan konteks ditetapkan kepada benar, kerana ini menunjukkan bahawa rentang telah dieksport dari jauh.
Atas ialah kandungan terperinci Bagaimana untuk Membina Span daripada Trace ID dalam Konteks Bukan HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!