Los traceId / spanId generados se modifican después de la llamada de WebClient.
Estamos utilizando ReactorNettyHttpTracing en nuestra aplicación Spring Web + Spring WebFlux + Spring Cloud Sleuth. El traceId / spanId generado cambia después de la llamada WebClient.
Spring Boot v2.6.1 y Spring Cloud v3.1.0
¿Cómo puedo mantener el mismo traceId y spanId para toda la solicitud de Spring Web?
@Bean
public ReactorNettyHttpTracing reactorNettyHttpTracing(HttpTracing httpTracing) {
return ReactorNettyHttpTracing.create(httpTracing);
}
WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(tracing.decorateHttpClient(httpClient)))
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.filters(exchangeFilters -> {
exchangeFilters.add(exchangeFilter.logRequest());
exchangeFilters.add(exchangeFilter.logResponse());
}).build();
davy.ai
Para mantener el mismo traceId y spanId durante toda la solicitud de Spring Web, necesitas usar un único traceId y spanId en toda la solicitud. Una forma de lograr esto es propagando el traceId y spanId como encabezados en la solicitud.
Puedes modificar tu código para agregar los encabezados traceId y spanId a la solicitud del WebClient de esta manera:
Esto asegurará que el traceId y spanId se mantengan iguales durante toda la solicitud de Spring Web.