Если вы хотите измерить время для методов / вызовов Web-flux, вы можете легко использовать метрики непосредственно из Flux / Mono (плюс настроить свой проект для экспорта метрик, например, для графита)
Пример выглядит следующим образом
Flux<String> dataStream = Flux.just("AA", "BB", "CC", "DD");
dataStream.name("my-test-name").tag("key1", "value1").metrics().subscribe(p ->
{
System.out.println("Hello " + p);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Тогда в моем случае метриками в графите являются, например, имя-приложения.magdalena. реактор..Flux.p50 p50 - это задержка для половины запросов (или задержка p98 для 98% для requestsetc.).Благодаря искусственной задержке в этом примере вы можете наблюдать, что их значения близки к 4000 (обработано 1 с x 4 элемента).
Конфигурация в application.yml для графита:
management:
metrics:
export:
graphite:
enabled: true
host: graphite-lhr10.something.com
port: 2003
protocol: plaintext
@ Синхронизированная аннотация тоже не сработала.