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

Spring Boot 2.x与3.0服务间TraceId丢失问题排查

TraceId丢失问题的解决方法

你的问题核心在于Spring Boot 3.0版本服务的追踪配置不完整,导致发起请求时无法正确传递TraceId,具体修正步骤如下:

1. 补充3.0版本服务的追踪配置

在3.0服务的application.yml中添加以下配置,对齐2.7版本的追踪规则:

management.tracing.propagation.type: w3c,b3
management.tracing.trace-id-128: true
management.tracing.supports-join: false
  • management.tracing.propagation.type:指定追踪头的传播类型,同时支持W3C和B3格式,确保与2.7版本的Sleuth兼容,也保证3.0服务间的追踪传递。
  • management.tracing.trace-id-128:开启128位TraceId,和2.7版本的配置保持一致。
  • management.tracing.supports-join:关闭追踪会话合并,避免生成新的TraceId。

2. 确保客户端请求被正确追踪

如果你的3.0服务使用自定义的RestTemplate或WebClient,需要确保它们被Micrometer Tracing正确代理:

自定义RestTemplate的处理

若手动创建了RestTemplate Bean,需添加追踪拦截器:

import brave.Tracing;
import brave.spring.web.TracingClientHttpRequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(Tracing tracing) {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getInterceptors().add(new TracingClientHttpRequestInterceptor(tracing));
        return restTemplate;
    }
}

自定义WebClient的处理

若手动创建WebClient,需添加追踪过滤器:

import brave.Tracing;
import brave.spring.web.reactive.TracingExchangeFilterFunction;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {
    @Bean
    public WebClient webClient(Tracing tracing) {
        return WebClient.builder()
                .filter(new TracingExchangeFilterFunction(tracing))
                .build();
    }
}

如果使用Spring Boot自动配置的RestTemplateBuilder或WebClient.Builder,则无需额外操作,依赖会自动注入追踪逻辑。

3. 验证依赖完整性

确认3.0服务的依赖中,micrometer-tracing-bridge-brave已正确引入,它是实现Brave与Micrometer Tracing桥接的核心依赖,确保追踪逻辑生效。

完成以上配置后,3.0服务发起的请求会正确携带TraceId,无论是调用其他3.0服务还是2.7服务,都不会再出现TraceId丢失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:45:01