Spring Interceptor与Spring sleuth 3.x.x的afterCompletion方法有不同的



我目前正在开发一个Spring启动项目。最近我将Spring引导版本从2.3.3升级到2.6.6。在Spring boot 2.3.3中,我使用Spring cloud sleuth 2.x。现在已经升级到3.x。由于Spring云依赖管理BOM。POM如下

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
</dependencies>

我有一个拦截器如下

@Slf4j
@Component
public class RequestInterceptor implements HandlerInterceptor {
@Autowired
private Tracer tracer;
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
log.info("Execution completed with traceId: {}", tracer.currentSpan().context().traceIdString());
}

之前,这段代码为该特定请求的所有日志提供了相同的traceId。但随着春天侦探3.x。x我得到一个不同的traceId后完成()的弹簧拦截器。有人能帮帮忙吗?

注意:我知道这是一个刻意的例子,但我有一个类似的代码在我的项目

这是一个bug在侦查它似乎或一些行为已经改变在反应器/WebClient - https://github.com/spring-cloud/spring-cloud-sleuth/issues/2075

最新更新