我创建了一个演示应用程序,希望了解如何在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 -生产就绪功能-跟踪
1条答案
按热度按时间a64a0gku1#
我设法创建了两个解决方案来使旧的注解工作。第一个复制Sleuth项目代码并修改它,而另一个是手动实现。
总的来说,我鼓励任何人使用新的
@Observed
注解,因为据我所知,旧的注解不是Sping Boot 3的重点(基于Spring Boot 3文档中没有提到)。但是,如果您很好奇或者有很好的理由重新实现旧的注解,您可以看看这两个分支:
请注意,上述实现并不完整:
@SpanName
。