簡體   English   中英

Spring Interceptor 與 Spring sleuth 3.xx 的 afterCompletion 方法具有不同的 traceId

[英]Spring Interceptor has different traceId for afterCompletion method with Spring sleuth 3.x.x

我目前正在開發一個 Spring Boot 項目。 最近我將我的 Spring boot 版本從 2.3.3 升級到了 2.6.6。 在 Spring boot 2.3.3 中,我使用的是 Spring cloud sleuth 2.xx,由於 Spring cloud 依賴管理 BOM,它現在已升級到 3.xx。 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。 但是在 Spring sleuth 3.xx 中,我在 Spring Interceptor 的 afterCompletion() 中得到了不同的 traceId。 有人可以幫忙嗎

注意:我知道這是一個故意的例子,但我的項目中有類似的代碼

這似乎是 Sleuth 中的一個錯誤,或者 Reactor / WebClient 中的某些行為發生了變化 -https://github.com/spring-cloud/spring-cloud-sleuth/issues/2075

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM