Я использую пользовательские таймеры для обработки тонны полей с помощью микрометра. В идеале я не хочу, чтобы показатели, сообщаемые для этого конкретного счетчика, имели нулевое число между настроенным интервалом шага. Это не критично, но хотелось бы уменьшить шум того, что отправляется в NR каждые x секунд.
Я создал расширение для NewRelicMeterRegistry, которое переопределяет метод publish()
, чтобы добавить функциональность до значения по умолчаниюповедение.
public class FilteringNewRelicMeterRegistry extends NewRelicMeterRegistry {
public FilteringNewRelicMeterRegistry(NewRelicConfig config, Clock clock) {
super(config, clock);
}
/**
* Remove field metrics that have not been used since the last publish.
*/
@Override
protected void publish() {
getMeters().stream()
.filter(filterByMeterId(...)))
.filter(meter -> ((Timer) meter).count() == 0)
.forEach(this::remove);
super.publish();
}
}
Но я не могу понять, как заставить автоконфигурацию отдавать предпочтение этой реализации по умолчанию NewRelicMeterRegistry
.
Как мне получитьSpring-Boot или микрометр, чтобы соблюдать мою реализацию и использовать это как обозначенный bean-компонент в контексте приложения для целей автоматического подключения?
Также, если есть готовый способ переопределить это поведение с помощью абстракций или утилиты микрометра,Круто, что было бы еще лучше! Пожалуйста, дайте мне знать. Я пытался использовать MeterRegistryCustomizer
, но, похоже, у меня не было того, что мне нужно.
Я хочу избежать использования функций планирования Spring через @Scheduled
, хотел бы сделать это при публикации. основа.