当前位置: 首页 > 知识库问答 >
问题:

Spring Interceptor对于Spring侦探3. x. x的后完成方法具有不同的traceId

融泓
2023-03-14

我目前正在从事Spring boot项目。最近,我将Spring boot的版本从2.3.3升级到2.6.6。在Spring boot 2.3.3中,我使用的是Spring cloud sleuth 2.x.x,由于Spring cloud依存关系管理BOM,它现在已经升级到3.x.x。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 spr uth 3. x. x,我在Spring Interceptor的postComplection()中获得了不同的traceId。有人能帮忙吗

注意:我知道这是一个深思熟虑的例子,但我的项目中有一个类似的代码

共有1个答案

柯乐池
2023-03-14

这似乎是Sleuth中的一个bug,或者Reactor/网络客户端中的一些行为发生了变化-https://github.com/spring-cloud/spring-cloud-sleuth/issues/2075

 类似资料:
  • 当我在使用log4j2进行日志记录的Spring Boot项目中添加侦探依赖项时,我得到以下错误 sleuth是否只支持logback,并且还支持log4j2?

  • 问题内容: 我正在练习继承。 我有两个相似的类,我想将其同化为一个数组,因此我想将Object类用作超类,因为所有内容都是Object的子类。 因此,例如,我将T类和CT类放入一个名为all的数组中,如下所示: 我跳过了声明,因为那不是我的问题。 当我希望使用循环在数组内调用函数时,我真正的问题就变成了: T和CT分别涉及的类都具有beingShot方法,该方法是公共的。 Eclipse建议将它们

  • 在反应中的怪异行为。js。当我在道具中传递一些随机生成的值时。它在控制台日志中提供不同的输出。 当我调试时,它会再次返回到应用程序。js(Parent)并检查其值,但控制台只有2个,而不是4个。 我在反应生命周期中错过了什么? 以下是github回购协议:git@github.com:senseihimanshu/扫雷舰。吉特 请检查App.js和Board.js以进一步澄清,并在开发工具的控制台

  • 我正在尝试实现Slueth,用于spring boot微服务的分布式跟踪,这些微服务通过消息传递通道相互通信。 其中一个微服务是一个调度器,它接收一天内创建的新消费者。然后,它以异步方式为每个消费者的数据运行分组过程。 现在,我使用traceableExeucutorService将为调度程序线程生成的sleuth跟踪传递给每个使用者的子线程。 跟踪配置 调度程序服务 这最终会为每个消费者使用相同

  • 问题内容: 我尝试过一些关于绑定和未绑定方法的代码。当我们调用它们时,我认为它们都会返回对象。但是,当我用于获取一些信息时,它返回的内容我并不理解。 IDE:Eclipse 插件:pydev 输出是… 为什么#1和#2返回相同的ID?他们不是不同的对象吗?如果我们分配和两个变量,#3,#4回报不同的ID。 我认为#3和#4表明它们不是同一对象,而是#1和#2 … 绑定方法的ID和未绑定方法的ID有

  • 问题内容: 我以为运算符检查对象的相等性。但事实并非如此: 问题答案: *Python *将相同的内存 位置用于方法和,这是*两个对象,它们的生命周期不重叠,因此对它们返回相同的标识。请参阅下面的详细说明。 从is运算符的文档中: 运算符是否测试对象标识:并且仅当x和y是同一对象时,x is y才是true。 从ID的文档中 返回对象的“身份”。这是一个整数(或长整数),在此对象的生存期内,此整数