2

opentelemetery-apiversion中,我们曾经通过以下代码在 current0.8.0中设置一个新的:SpanContextContext

TracingContextUtils.currentContextWith(DefaultSpan.create(newSpanCtx))

但是,在 version0.13.1中, -TracingContextUtilsDefaultSpan都被删除了。那么如何SpanContext在当前设置一个新的Context

4

2 回答 2

3

opentelemetry-java版本0.10.0 发行说明

  • TracingContextUtilsBaggageUtils从公共 API 中删除。相反,在SpanandBaggage类上使用适当的静态方法,或者在其Context自身上使用方法。
  • DefaultSpan已从公共 API 中删除。相反,Span.wrap(spanContext)如果您需要传播跟踪上下文的非功能性跨度,请使用。

您可以尝试以下方法:

val newSpanCtx: SpanContext = null
val span: Span = Span.wrap(newSpanCtx)
Context.current().`with`(span).makeCurrent()
于 2020-12-28T12:54:58.747 回答
2

使用scope和调用makeCurrent方法怎么样?

Span span = tracer.spanBuilder("my span").startSpan();
// put the span into the current Context
try (Scope scope = span.makeCurrent()) {
    // your use case
    ...
} catch (Throwable t) {
    span.setStatus(StatusCode.ERROR, "Change it to your error message");
} finally {
    span.end(); // closing the scope does not end the span, this has to be done manually
}

这也是快速入门的内容。

于 2020-12-28T13:21:22.493 回答