2016-10-28 83 views
1

我想使用Springboot MetricRepository

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 

是否存在的一種方式壓倒這種行爲?

回答

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啓動提供 取決於版本你正在使用的Java。與 Java 8(或更好)的實施切換到高性能 版本優化的快速寫入,支持原子內存緩衝區, ,而不是一成不變但相對昂貴的度量類型 (計數器約快5倍並測量大約 兩倍於基於存儲庫的實現速度)。

...

【注】老MetricRepository及其InMemoryMetricRepository 實現不使用默認情況下,如果你是Java的8,或如果您 使用Dropwizard指標。

...

要錄製自己的指標註入CounterService和/或GaugeService 到你的bean。 CounterService公開增加,減少和重置方法; GaugeService提供了一個提交方法。