Springboot MetricRepository

时间:2016-10-28 22:40:17

标签: spring-boot spring-boot-actuator

我正在尝试使用

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

有没有办法覆盖这种行为?

1 个答案:

答案 0 :(得分:4)

使用java 8,您应该使用CounterServiceGaugeServiceBufferMetricReader

@Autowired
private BufferMetricReader metricReader;

@Autowired
private CounterService counterService;

@Autowired
private GaugeService gaugeService;

...

counterService.increment("metric1");
gaugeService.submit("metric2", 10d);
metricReader.findAll();

Spring Documentation

  

提供了GaugeService和CounterService的默认实现   Spring Boot取决于您使用的Java版本。同   Java 8(或更好)的实现切换到高性能   由快速写入优化的版本,由原子内存缓冲区支持,   而不是由不可变但相对昂贵的度量类型   (计数器大约快5倍,并且大约是   比基于存储库的实现快两倍。

     

...

     

[Note]旧的MetricRepository及其InMemoryMetricRepository   如果您使用的是Java 8,或者如果您使用,则默认情况下不使用实现   正在使用Dropwizard指标。

     

...

     

要记录您自己的指标,请注入CounterService和/或GaugeService   进入你的豆子。 CounterService公开递增,递减和   重置方法; GaugeService提供了一个提交方法。