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

使用Micrometer Tracing Brave+RestTemplate/WebClient时TraceId无法跨服务传递

问题原因

直接创建的WebClient/RestTemplate实例没有集成Micrometer Tracing的拦截器/过滤器,导致无法自动传递traceparent请求头,服务2无法识别上游的TraceId,只能生成新的追踪ID。

解决方案

1. 修复WebClient配置

别直接用WebClient.create()初始化,改用WebClient.Builder并注入追踪过滤器:

@Bean
public WebClient webClient(TracingExchangeFilterFunction tracingFilter) {
    return WebClient.builder()
            .baseUrl("http://localhost:8080")
            .filter(tracingFilter)
            .build();
}

TracingExchangeFilterFunction是Micrometer Tracing自动配置的Bean,直接注入后就能自动给请求添加traceparent等追踪头。

2. 修复RestTemplate配置

针对RestTemplate有两种修复方式:

方式一:用自动配置的RestTemplateBuilder构建

@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.build();
}

Spring Boot的RestTemplateBuilder已经内置了TracingClientHttpRequestInterceptor,通过它构建的RestTemplate会自动传递追踪头。

方式二:手动添加追踪拦截器

@Bean
public RestTemplate restTemplate(TracingClientHttpRequestInterceptor tracingInterceptor) {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getInterceptors().add(tracingInterceptor);
    return restTemplate;
}

3. 确认依赖完整性

两个服务的pom.xml里,除了现有依赖,还要根据客户端类型补全基础依赖:

  • 用WebClient的话,添加WebFlux依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
  • 用RestTemplate的话,添加Web依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Micrometer相关依赖已经通过micrometer-tracing-bridge-brave间接引入,无需额外添加。

4. 验证追踪头传递

可以在服务2的Controller里打印请求头,确认traceparent是否正确传递:

@GetMapping
public String hello(HttpServletRequest request) {
    System.out.println("Received traceparent: " + request.getHeader("traceparent"));
    return "Hello from service 2";
}

如果能输出服务1的TraceId,说明传递成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:45:09