微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在当前上下文中设置跨度上下文?

如何解决如何在当前上下文中设置跨度上下文?

opentelemetery-api 版本 0.8.0 中,我们曾经通过以下代码在当前 SpanContext 中设置新的 Context

TracingContextUtils.currentContextWith(DefaultSpan.create(newSpanCtx))

然而,在版本 0.13.1 中, - TracingContextUtilsDefaultSpan 都被删除了。那么如何在当前的 SpanContext 中设置一个新的 Context

解决方法

opentelemetry-java 版本 0.10.0 release notes

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

您可以尝试以下操作:

val newSpanCtx: SpanContext = null
val span: Span = Span.wrap(newSpanCtx)
Context.current().`with`(span).makeCurrent()
,

如何使用 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
}

这也是 quickstart 所声明的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。