如何从异步值创建千分尺?

13z8s7eq  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(376)

我有一个带有测微计的React式Springwebflux应用程序。
我想创建一个“ Jmeter ”指标,如:

Gauge gauge = Gauge
  .builder("gaugeName", list, List::size)
  .register(registry);

或供应商版本,如:

Gauge gauge = Gauge
  .builder("gaugeName", () -> getValue())
  .register(registry);

然而,我有一个异步的值源,即一个返回mono的方法。
如何从异步值创建千分尺?

jmp7cifd

jmp7cifd1#

目前,我只找到了以下解决方案:
将 Jmeter 注册处的 Jmeter 注册到 gauge() 方法,该方法返回 Number 子类型

AtomicLong gauge = meterRegistry.gauge("name", new AtomicLong(0));

现在可以使用 set() 方法

gauge.set(value);

创建一个计划任务,该任务将运行React链,并根据固定的时间间隔更新量表:

@Scheduled
public void scheduleTask() {
    Mono.from(getValue()).subscribe(value -> gauge.set(value));
}

步骤1-2如下:https://micrometer.io/docs/concepts#_manually_incrementingdecrementing_a_gauge
步骤3从这里开始:https://spring.io/guides/gs/scheduling-tasks/
这种方法有很大的缺点:
指标是急切地更新,而不是按需更新
度量值不显示实际值,并且总是滞后于时间
如果有人建议一种更好的方法,根据异步计算的值创建测微计,我将不胜感激。

相关问题