You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus中@Traced注解在OpenTelemetry替代OpenTracing后是否生效的问询

@Traced注解在Quarkus OpenTelemetry环境下的兼容性问题

直接结论:原OpenTracing的@Traced注解在纯Quarkus OpenTelemetry环境下无法正常工作,你遇到的无追踪数据问题确实是由OpenTelemetry替代OpenTracing导致的,而非单纯配置缺失。

原因说明

OpenTelemetry与OpenTracing是两套独立的分布式追踪标准,Quarkus的OpenTelemetry扩展仅原生支持自身生态的注解,不会识别处理OpenTracing专属的@Traced注解。当你移除OpenTracing相关扩展、切换到OpenTelemetry后,负责解析@Traced的逻辑也随之被移除,自然无法生成对应的追踪数据。

解决办法

1. 迁移到OpenTelemetry原生注解(推荐长期方案)

将代码中的@Traced替换为OpenTelemetry的@WithSpan注解,示例如下:

import io.opentelemetry.instrumentation.annotations.WithSpan;

public class YourService {
    @WithSpan
    public void yourMethod() {
        // 业务逻辑
    }
}

确保项目中已引入quarkus-opentelemetry依赖,该注解会被Quarkus OpenTelemetry扩展自动识别,生成对应的追踪Span。

2. 启用OpenTracing兼容层(过渡方案)

如果暂时不想大规模修改代码,可以添加Quarkus提供的OpenTelemetry-OpenTracing兼容扩展,让旧的@Traced注解继续生效:

  • 在pom.xml(Maven)中添加依赖:
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-opentelemetry-opentracing</artifactId>
</dependency>

这个扩展会让OpenTracing的API(包括@Traced)底层使用OpenTelemetry的实现,从而保留原有注解的追踪能力,但这只是过渡方案,建议后续逐步迁移到原生注解。

额外验证

虽然核心问题是注解兼容性,但可以快速确认OpenTelemetry基础配置是否正常:

  • 检查application.properties中是否配置了追踪 exporter(例如OTLP):
quarkus.opentelemetry.tracer.exporter.otlp.endpoint=http://your-otlp-collector:4317
quarkus.opentelemetry.tracer.exporter.otlp.protocol=grpc

如果配置正确且使用@WithSpan仍无数据,再排查其他配置问题,但你的场景大概率是注解不兼容导致。

内容的提问来源于stack exchange,提问作者sg2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:02:51