我正在尝试使用
org.springframework.boot.actuate.metrics.repository.MetricRepository
使用
吐出指标private final MetricRepository repository;
@Autowired
public MetricExporterService(MetricRepository repository) {
this.repository = repository;
}
但是因为我使用的是Java 1.8,所以
Parameter 0 of constructor in com.example.actuator.MetricExporterService required a bean of type 'org.springframework.boot.actuate.metrics.repository.MetricRepository' that could not be found.
- Bean method 'actuatorMetricRepository' not loaded because @ConditionalOnJava (older than 1.8) found 1.8
有没有办法覆盖这种行为?
答案 0 :(得分:4)
使用java 8,您应该使用CounterService
,GaugeService
和BufferMetricReader
:
@Autowired
private BufferMetricReader metricReader;
@Autowired
private CounterService counterService;
@Autowired
private GaugeService gaugeService;
...
counterService.increment("metric1");
gaugeService.submit("metric2", 10d);
metricReader.findAll();
提供了GaugeService和CounterService的默认实现 Spring Boot取决于您使用的Java版本。同 Java 8(或更好)的实现切换到高性能 由快速写入优化的版本,由原子内存缓冲区支持, 而不是由不可变但相对昂贵的度量类型 (计数器大约快5倍,并且大约是 比基于存储库的实现快两倍。
...
[Note]旧的MetricRepository及其InMemoryMetricRepository 如果您使用的是Java 8,或者如果您使用,则默认情况下不使用实现 正在使用Dropwizard指标。
...
要记录您自己的指标,请注入CounterService和/或GaugeService 进入你的豆子。 CounterService公开递增,递减和 重置方法; GaugeService提供了一个提交方法。