gpt4 book ai didi

java - 如何将 Micrometer 计时器与 webflux 端点一起使用

转载 作者:行者123 更新时间:2023-12-02 01:51:25 32 4
gpt4 key购买 nike

是否有任何简单的方法可以将 Micrometer 计时器与 Webflux Controller 结合使用?

@Timed 似乎仅适用于非响应式方法。对于 react 性来说,它记录的时间值非常低。

我发现了类似的问题:How to use Micrometer Timer to record duration of async method (returns Mono or Flux)但对于这样一个常见问题来说,答案太复杂了

有什么想法吗?

最佳答案

如果您想测量 Web-flux 方法/调用的时间,您可以直接从 Flux/Mono 轻松使用指标(加上配置您的项目以导出指标,例如 Graphite )

一个例子看起来像

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();
}
});

然后在我的例子中, Graphite 中的指标例如在 application-name.magdalena 下。reactor.flow.duration.exception.flow.my-test-name.status.completed.type.Flux.p50 p50 - 一半请求的延迟(或 98% pf 请求的 p98 延迟等)。感谢他们在这个例子中的人为延迟,您可以观察到它们的值接近 4000(处理了 1s x 4 个元素)。

Graphite 的 application.yml 中的配置:

management:
metrics:
export:
graphite:
enabled: true
host: graphite-lhr10.something.com
port: 2003
protocol: plaintext

@Timed 注释对我来说也不起作用。

关于java - 如何将 Micrometer 计时器与 webflux 端点一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932685/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com