繁体   English   中英

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

[英]@NewSpan and @ContinueSpan support in Spring Boot 3

我创建了一个演示应用程序,我想在其中查看如何在 Spring Boot 2 和 Spring Boot 3 中设置跟踪: https ://github.com/Compile-Time/demo-tracing-in-spring-boot-2-and- 3个

该演示对 Spring 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);
    }

}

根据 Micrometer Tracing 存储库中的迁移指南,似乎只需要将 Spring Cloud Sleuth 包名称更改为 Micrometer Tracing 名称即可: https ://github.com/micrometer-metrics/tracing/wiki/Spring -Cloud-Sleuth-3.1-迁移指南#async-instrumentation

但是,在 Spring Boot 3 中演示 @NewSpan 和 @ContinueSpan 注释时,我没有看到任何新的子跨度或对现有跨度的修改。 这让我想知道是否甚至支持“旧的”Sleuth 注释。 因为 micrometer-tracing 文档没有提到 @NewSpan 和 @ContinueSpan 注释的存在: https ://micrometer.io/docs/tracing 。 此外,我没有在 Spring Boot 3 文档中找到任何暗示支持“旧”注释的提示。

但是,在千分尺跟踪存储库中存在注释: https ://github.com/micrometer-metrics/tracing/tree/main/micrometer-tracing/src/main/java/io/micrometer/tracing/annotation

所以理论上,有人可以提供一个使@NewSpan 和@ContinueSpan 注释起作用的实现。

这给我留下了以下假设:

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

如果有人能证实或否定我的部分或全部假设,我会很高兴。 有可能我在某处遗漏了什么。

我在以下存储库中搜索了@NewSpan 或@ContinueSpan 支持的任何提示:

我查看了以下文档中是否提到了@NewSpan 和@ContinueSpan:(我无法在此处提供链接,因为这是一个没有声誉的新帐户......)

  • 千分尺文档 - 千分尺追踪
  • Spring Boot 3 - 生产就绪特性 - 指标
  • Spring Boot 3 - 生产就绪特性 - 跟踪

我设法创建了两个解决方案来使旧注释起作用。 第一种是复制Sleuth项目代码并修改,另一种是手动实现。

总的来说,我鼓励任何人使用新的@Observed注释,因为据我所知,旧注释不是 Spring Boot 3 的重点(基于 Spring Boot 3 文档中没有提及)。

然而,如果你很好奇或者有充分的理由重新实现旧的注解,你可以看看这两个分支:

  • 侦探代码副本: https ://github.com/Compile-Time/demo-tracing-in-spring-boot-2-and-3/tree/sleuth-aspect-code-copy/sleuth-annotation-port
  • 手动实现: https ://github.com/Compile-Time/demo-tracing-in-spring-boot-2-and-3/tree/sleuth-aspect-manual-implementation/sleuth-annotation-port

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

  • 它们都不适用于 Spring Reactive。
  • 手动实现不支持@SpanName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM