我正在寻找为 Brave 中的 Span 设置跟踪 ID 的正确方法。勇敢前我们有:
Span span = Span.builder().traceId(someLong).build();
什么是勇敢的等价物?我有以下内容,但这显然不正确,因为无法明确设置 Span 的上下文。
Span span = tracer.nextSpan().start();
span.context().toBuilder().traceId(someLong).build();
我正在寻找为 Brave 中的 Span 设置跟踪 ID 的正确方法。勇敢前我们有:
Span span = Span.builder().traceId(someLong).build();
什么是勇敢的等价物?我有以下内容,但这显然不正确,因为无法明确设置 Span 的上下文。
Span span = tracer.nextSpan().start();
span.context().toBuilder().traceId(someLong).build();
你可以这样做brave.Span span = tracer.nextSpan().name("name").traceId(someLong).start();
或者更提前
brave.Span span = tracer.nextSpan().name("name").traceId(someLong);
try (SpanInScope ws = tracer.withSpanInScope(span.start())) {
// do sth
} finally {
span.finish();
}
查看spring cloud sleuth 迁移指南以了解所有更改
我们可以先建立TraceContext
,然后我们可以使用它来创建TraceContextOrSamplingFlags
,然后可以用来创建Span
如下:
TraceContext traceContext = TraceContext.newBuilder()
.traceId(someTraceId)
.spanId(someSpanId)
.build();
Span span = tracer.nextSpan(TraceContextOrSamplingFlags.create(traceContext))
.name(someName).start();
您可以使用 TraceContext Builder 设置您自己的 TraceId。
TraceContext traceContext = TraceContext.newBuilder().traceId(traceId).build();
Span span =
this.tracing.tracer()
.toSpan(traceContext)
.name("application.name"))
.start();
这是可选的;您可以在创建新的 Span 时让 Tracer 生成自己的 traceId :-
this.tracing.tracer().nextSpan().name("application.name").start();