千分尺跟踪brave + rest模板/ web客户端



我正在尝试将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();
}

最新更新