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

Spring Boot 3中RestTemplate调用服务时TraceId无法正常传播的解决方法

解决RestTemplate调用时TraceId跨服务传播问题

要让服务A的TraceId通过RestTemplate调用传播到服务B,核心是给RestTemplate添加链路追踪拦截器,自动将当前上下文的链路信息注入请求头,同时确保服务B能识别这些信息。具体步骤如下:

1. 添加链路追踪依赖

根据Spring Boot版本选择对应依赖:

  • Spring Boot 3.x(使用Micrometer Tracing):
    Maven配置:
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-brave</artifactId>
    </dependency>
    
    Gradle配置:
    implementation 'io.micrometer:micrometer-tracing'
    implementation 'io.micrometer:micrometer-tracing-bridge-brave'
    
  • Spring Boot 2.x(使用Spring Cloud Sleuth):
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    

2. 修改RestTemplate Bean配置

给RestTemplate添加链路追踪拦截器,自动传递TraceId:

Spring Boot 3.x(Micrometer Tracing)

@Bean
public RestTemplate simpleRestTemplate(Tracing tracing) {
    RestTemplate restTemplate = new RestTemplate();
    // 添加拦截器,自动注入链路头信息
    restTemplate.getInterceptors().add(new TracingClientHttpRequestInterceptor(tracing));
    return restTemplate;
}

Spring Boot 2.x(Spring Cloud Sleuth)

@Bean
public RestTemplate simpleRestTemplate(SpanNameProvider spanNameProvider) {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getInterceptors().add(new TraceRestTemplateInterceptor(spanNameProvider));
    return restTemplate;
}

3. 服务B的配置

服务B需要引入和服务A完全相同的链路追踪依赖,这样它会自动识别请求头中的TraceId(默认是X-B3-TraceId等B3格式的头信息),并将其纳入自身的链路上下文。

4. 确认日志格式

确保服务A和服务B的日志配置中包含TraceId,比如在application.yml中配置:

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %X{traceId}%n"

配置完成后,服务A发起RestTemplate调用时,会自动将当前TraceId放入请求头,服务B接收请求后会复用该TraceId,实现跨服务的链路追踪一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:34