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

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

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

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

或供应商版本,如:

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

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

jmp7cifd

jmp7cifd1#

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

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

现在可以使用 set() 方法

  1. gauge.set(value);

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

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

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

展开查看全部

相关问题