Обновление Java-микрометра с динамическими метками ⇐ JAVA
Обновление Java-микрометра с динамическими метками
Я использую датчик Java Micrometer для измерения показателя, имеющего ряд меток. Значения меток извлекаются динамически, но ограничены. Например, у меня есть метрика withdraw.cycle с меткой currency.
Поскольку Micrometer не содержит ссылки на сам датчик, код выглядит довольно громоздким. У меня есть два способа сделать это:
private void updateGauge (строка валюты, int минуты) { Теги tags = Tags.of("валюта", валюта); Gauge.builder("withdraw.cycle",() -> минуты) .tags(теги) .strongReference(истина) .register(meterRegistry); } ИЛИ
частная финальная картаcycleGaugeMap = new ConcurrentHashMap(); // Используйте CyclGaugeMap для хранения ссылки на датчик Private void updateGauge(Строка валюты, интервал минут) { Теги tags = Tags.of("валюта", валюта); если (cycleGaugeMap.containsKey(теги)) { CycleGaugeMap.get(теги).set(минуты); } еще { AtomicLong old =cycleGaugeMap.putIfAbsent(tags,meterRegistry.gauge("withdraw.cycle", tags, новый AtomicLong(минуты))); если (старый != ноль) { старый.set(минуты); } } } Мой вопрос: правильные ли это способы сделать это или у Micrometer есть неизвестный мне API для таких случаев? Мне бы очень хотелось узнать «стандартный» и элегантный способ сделать это.
Я использую датчик Java Micrometer для измерения показателя, имеющего ряд меток. Значения меток извлекаются динамически, но ограничены. Например, у меня есть метрика withdraw.cycle с меткой currency.
Поскольку Micrometer не содержит ссылки на сам датчик, код выглядит довольно громоздким. У меня есть два способа сделать это:
private void updateGauge (строка валюты, int минуты) { Теги tags = Tags.of("валюта", валюта); Gauge.builder("withdraw.cycle",() -> минуты) .tags(теги) .strongReference(истина) .register(meterRegistry); } ИЛИ
частная финальная картаcycleGaugeMap = new ConcurrentHashMap(); // Используйте CyclGaugeMap для хранения ссылки на датчик Private void updateGauge(Строка валюты, интервал минут) { Теги tags = Tags.of("валюта", валюта); если (cycleGaugeMap.containsKey(теги)) { CycleGaugeMap.get(теги).set(минуты); } еще { AtomicLong old =cycleGaugeMap.putIfAbsent(tags,meterRegistry.gauge("withdraw.cycle", tags, новый AtomicLong(минуты))); если (старый != ноль) { старый.set(минуты); } } } Мой вопрос: правильные ли это способы сделать это или у Micrometer есть неизвестный мне API для таких случаев? Мне бы очень хотелось узнать «стандартный» и элегантный способ сделать это.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение