如何解决从隐式上下文获取当前活动范围
我在opentelemetry/specification/trace/api中找到了这个
如果该语言支持隐式传播的
Context
(请参见here),则API还应提供以下功能:
- 从隐式上下文获取当前活动范围。这等效于获取隐式上下文,然后从上下文中提取
Span
。- 将当前活动范围设置为隐式上下文。这等效于获取隐式上下文,然后将
Span
插入上下文。
但是我没有找到在Java或go中获取当前活动范围的方法。是否有任何语言支持此功能?
任何帮助将不胜感激!
解决方法
是的,.NET 支持它:global::OpenTelemetry.Trace.Tracer.CurrentSpan
。这是有效的,因为在任何给定的执行流程中一次只能有一个“活动”跨度。需要明确的是:可以有多个 span 同时处于活动状态,只是不在同一个执行流程中;执行流可以分叉,但每个分叉一次只有一个活动跨度。
此外,.NET 在其 Activity API 中已经具有与 OpenTelemetry API 等效的功能。
- Tracer 是 ActivitySource 的包装器。
- TelemetrySpan 是 Activity 的包装器。
您还可以通过访问 System.Diagnostics.ActivityContext
来获取当前的 Activity.Current.Context
。
OpenTelemetry API 的 .NET 参考实现建议您直接使用 .NET 框架的内置活动 API。但是,它还提供了封装 Activity API 的 OpenTelemetry shims。
例如,您可以将 OpenTelemetry.Trace.SpanContext
隐式转换为 System.Diagnostics.ActivityContext
。您可以使用 new OpenTelemetry.Trace.SpanContext(activityContext)
将其转换回来。
我没有看到从 SpanContext 获取 TelemetrySpan 的方法;然而。所以 global::OpenTelemetry.Trace.Tracer.CurrentSpan
可能是您最好的选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。