如何解决如何在当前上下文中设置跨度上下文?
在 opentelemetery-api
版本 0.8.0
中,我们曾经通过以下代码在当前 SpanContext
中设置新的 Context
:
TracingContextUtils.currentContextWith(DefaultSpan.create(newSpanCtx))
然而,在版本 0.13.1
中, - TracingContextUtils
和 DefaultSpan
都被删除了。那么如何在当前的 SpanContext
中设置一个新的 Context
?
解决方法
从 opentelemetry-java 版本 0.10.0 release notes:
-
TracingContextUtils
和BaggageUtils
已从公共 API 中删除。相反,在Span
和Baggage
类上使用适当的静态方法,或在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 举报,一经查实,本站将立刻删除。