我正在尝试将traceId从一个服务传播到另一个由rest模板/web客户端调用的服务
我希望traceId是相同的,但实际上生成了新的traceId。
服务1:
@Bean
public WebClient webClient() {
return WebClient.create("http://localhost:8080");
}
简单调用service-2:
webClient.get().retrieve().bodyToMono(String.class).block();
我在两个服务中都有这些依赖项:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
我得到了与rest模板相同的行为。根据文档traceparent
头应该传播,但它不是。我使用的是spring boot 3.0.5
当您从头开始构建WebClient时,没有发生自动配置。你应该改变WebClient bean方法并注入WebClient. builder。
@Bean
public WebClient webClient(WebClient.Builder builder) {
return builder.baseUrl("....").build();
}