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

Spring Boot 3向Spring Boot 2调用时TraceId无法传递问题求助

问题:Spring Boot 3与Spring Boot 2 Sleuth TraceId无法同步

将应用迁移至Spring Boot 3.2.6并引入Micrometer Tracing相关依赖后,调用基于Spring Boot 2.6.14(使用Sleuth)的API时,TraceId无法在两个应用间同步。

环境配置

Spring Boot 3.2.6 POM依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Spring Boot 3.2.6 YAML配置

management:
  tracing:
    propagation:
      type: b3
    sampling:
      probability: 1.0 

Spring Boot 2.6.14 POM依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
        <version>3.1.3</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

双方日志格式

logging.pattern.level=%5p [traceId=%X{traceId}, spanId=%X{spanId}] 

已尝试的无效配置

spring.sleuth.traceId128=true
spring.sleuth.supportsJoin=false
spring.sleuth.propagation.type=W3C,B3 

可行解决方案

  • 调整Spring Boot 3的B3传播格式:Sleuth默认使用B3多header模式(X-B3-TraceId、X-B3-SpanId等),而Micrometer Tracing结合Brave默认可能使用单header模式。需在Spring Boot 3的YAML中添加:

    management:
      tracing:
        brave:
          propagation:
            type: B3_MULTI
    
  • 统一Spring Boot 2的传播配置:移除W3C传播类型,仅保留B3,并强制启用128位TraceId(匹配Spring Boot 3默认行为),修改Spring Boot 2的配置:

    spring.sleuth.traceId128=true
    spring.sleuth.propagation.type=B3
    spring.sleuth.supportsJoin=false
    
  • 验证请求头:确保Spring Boot 3发起的请求携带X-B3-TraceId(128位)、X-B3-SpanId、X-B3-Sampled这几个请求头,而非单条b3头。

  • 检查依赖兼容性:确认Spring Boot 3的micrometer-tracing-bridge-brave版本与Spring Boot 3.2.6兼容(Spring Boot 3.2.x对应Micrometer Tracing 1.1.x,Brave 5.14.x,无需额外指定版本,由Spring Boot管理即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:13:16