【发布时间】:2020-12-14 08:06:20
【问题描述】:
关于 Micrometer 的 @Timed 注释的小问题,以及如何将它与 Spring 的 reactive @Repository 一起使用。
我有一个非常简单的@Repository 界面,甚至没有自定义查询。
@Repository
public interface MyRepository extends ReactiveCassandraRepository<MyPojo, String> {
这里的例子是反应式 Cassandra,但任何 反应式 存储库都可以。
我想为默认方法的执行计时,save、findById、findAll,基本上是@Repository 提供的所有简单方法。
时间是指插入数据或检索数据所用的实际时间。
(这对于查看一段时间内、高负载下的读写性能等特别有用...)
因此,我满怀希望地尝试了:
@Repository
@Timed("mysupertimer")
public interface MyRepository extends ReactiveCassandraRepository<MyPojo, String> {
但遗憾的是,它不起作用。 只是为了避免混淆,它不适用于存储库方法。 我的@Controller 层中有@Timed,@Service 层的不同位置,我看到所有其他指标都很好。
另外,我真的希望得到一个关于注释@Repository 的答案。我知道我可以 @Timed “我项目中的所有地方都调用存储库”,但是我有 300 次调用存储库,需要向任何未来的贡献者解释以注释他的调用。
直接在@Repository 层上的解决方案会很棒。
非常感谢!
【问题讨论】:
-
我不知道这是否可能。但我认为你想要达到的目标是无关紧要的。因为您希望它会为您调用 cassandra 所花费的时间创建指标。但是您使用的是反应式存储库。它将监控装配时间spring.io/blog/2019/03/06/…
-
我也不知道,这就是我问这个问题的原因!当然,我正在寻找一种解决方案,其中“它将为您调用 cassandra 需要多长时间创建度量标准”。我知道它在响应式世界中是不同的(因此问题是,让它与 MVC 一起工作)。对于入站请求,它已经在 @Controller 层上实现了。我的问题只是数据库调用的技术问题。希望有人给出答案!
标签: java spring-webflux micrometer