在 Spring Boot 3中支持@NewSpan和@ContinueSpan

thigvfpy  于 2022-12-23  发布在  Spring
关注(0)|答案(1)|浏览(624)

我创建了一个演示应用程序,希望了解如何在Sping Boot 2和Spring Boot 3中设置跟踪:https://github.com/Compile-Time/demo-tracing-in-spring-boot-2-and-3
该演示将以下跟踪依赖项用于Sping Boot 3项目。

implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.zipkin.reporter2:zipkin-reporter-brave'

相关的代码是这个。

import io.micrometer.tracing.annotation.NewSpan;
import io.micrometer.tracing.annotation.SpanTag;

@Service
@RequiredArgsConstructor
public class NewSpanUserCreationService {

    private final UserCreationService userCreationService;

    @Transactional
    @NewSpan("create new user and group (@NewSpan)")
    public UserGroup create(
            @SpanTag("user.creation.request") final UserCreationRequest creationRequest
    ) {
        return userCreationService.create(creationRequest);
    }

}

根据测微计跟踪存储库中的迁移指南,似乎所有必要的操作就是将Spring Cloud Sleuth包名称更改为测微计跟踪包名称:https://github.com/micrometer-metrics/tracing/wiki/Spring-Cloud-Sleuth-3.1-Migration-Guide#async-instrumentation
然而,在Sping Boot 3中演示@NewSpan和@ContinueSpan注解时,我没有看到任何新的子范围或对现有范围的修改,这让我怀疑是否支持“旧的”Sleuth注解,因为测微计跟踪文档没有提到@NewSpan和@ContinueSpan注解的存在:此外,我在Sping Boot 3文档中没有找到任何建议支持“旧”注解的提示。
但是,在测微仪跟踪存储库中存在注解:https://github.com/micrometer-metrics/tracing/tree/main/micrometer-tracing/src/main/java/io/micrometer/tracing/annotation
因此,理论上,有人可以提供一个实现,使@NewSpan和@ContinueSpan注解工作。
这给我留下了以下假设:

  • Boot 3不正式支持旧的注解
  • 如果有人愿意,他们可以通过为旧的注解手动实现一个instrumentation/AOP方面来使旧的注解工作
  • 测微计的观测API是未来的首选方法

如果有人能证实或否定我的部分或全部假设,我会很高兴,因为我可能在某个地方漏掉了什么。
我搜索了下面的存储库,以找到任何有关@NewSpan或@ContinueSpan支持的提示:

我在以下文档中查找了任何提到@NewSpan和@ContinueSpan的内容:(我不能在这里提供链接,因为这是一个没有信誉的新帐户...)

  • 千分尺文档-千分尺描记
  • Sping Boot 3 -生产就绪功能-指标
  • Sping Boot 3 -生产就绪功能-跟踪
a64a0gku

a64a0gku1#

我设法创建了两个解决方案来使旧的注解工作。第一个复制Sleuth项目代码并修改它,而另一个是手动实现。
总的来说,我鼓励任何人使用新的@Observed注解,因为据我所知,旧的注解不是Sping Boot 3的重点(基于Spring Boot 3文档中没有提到)。
但是,如果您很好奇或者有很好的理由重新实现旧的注解,您可以看看这两个分支:

请注意,上述实现并不完整:

  • 他们都不为Spring Reactive工作。
  • 手动实现不支持@SpanName

相关问题