Возможно Java + Micrometer @Timed аннотация + Spring Reactive @Repository?

Небольшой вопрос об аннотации @Timed от Micrometer и о том, как ее использовать с реактивным @Repository из Spring, пожалуйста.

У меня есть интерфейс @Repository, который очень прост, даже без пользовательских запросов.

@Repository
public interface MyRepository extends ReactiveCassandraRepository<MyPojo, String> {

Здесь пример с реактивной Cassandra, но подойдет любой реактивный репозиторий.

Я хотел бы рассчитать время выполнения методов по умолчанию, сохранения, findById, findAll, в основном, всех простых методов, которые предлагает @Repository.

Под временем я имею в виду реальное время, необходимое для вставки данных или извлечения данных.

(Это особенно полезно для просмотра производительности чтения и записи с течением времени, при высокой нагрузке и т. д.)

Поэтому я попытался с большой надеждой:

@Repository
@Timed("mysupertimer")
public interface MyRepository extends ReactiveCassandraRepository<MyPojo, String> {

Но, к сожалению, это не работает. Просто, чтобы избежать путаницы, он не работает для методов репозитория. У меня есть @Timed в моем слое @Controller и в разных местах слоя @Service, я вижу все остальные показатели в порядке.

Кроме того, я очень надеюсь получить ответ на аннотацию @Repository, пожалуйста. Я понимаю, что могу просто @Timed «все места в моем проекте, вызывающие репозиторий», но у меня есть 300 вызовов в репозитории, и мне нужно будет объяснить любому будущему участнику, чтобы он также аннотировал его вызовы.

Решение непосредственно на уровне @Repository было бы потрясающим.

Большое спасибо!

Я не знаю, возможно ли это. Но я думаю, что то, чего вы пытаетесь достичь, не имеет значения. Потому что вы ожидаете, что он создаст метрику того, сколько времени занимают ваши звонки в cassandra. Но вы используете реактивный репозиторий. Он будет следить за временем сборки spring.io/blog/2019/03/06/…

JEY 14.12.2020 09:24

Я тоже не знаю, поэтому и задаю вопрос! И, конечно же, я ищу решение, в котором «он будет создавать метрику того, сколько времени занимают ваши звонки в cassandra». Я понимаю, что в реактивном мире все по-другому (отсюда и вопрос, он отлично работает с MVC). Это уже было достигнуто на уровне @Controller для входящих запросов. Мой вопрос - просто технический вопрос для вызова БД. Надеюсь, у кого-то есть ответ!

PatPanda 14.12.2020 16:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
2
1 770
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь это возможно с последней версией SpringBoot 2.5.0.

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes#timed-metrics-with-webflux

Другие вопросы по теме