8

Dropwizard metriklerinin nasıl etkinleştirileceği hakkında HikariCP wiki'sindeki talimatları okuyarak, HikariConfig veya HikariDatasource öğesinde bir MetricsRegistry örneği yapılandırmayı söylüyor. Sorun, Spring Boot'da, tüm yapılandırma otomatik yapılandırma ile ele alındığından HikariCP havuzunu manuel olarak yapılandırmam. Bunu nasıl yapacağınız ile ilgili talimatlar var mı? Kendi fasulyemi tanımlayarak ve tüm ayarları bir @ Konfigürasyon dosyasında ayarlayarak otomatik konfigürasyonu tamamen geçersiz kılmalı mıyım?Spring Boot uygulamasında HikariCP ve Dropwizard/Coda-Hale metriklerini nasıl yapılandırabilirim?

cevap

8

Bu nedenle, bir java yapılandırma dosyasında HikariCP'yi elle yapılandırarak bunu anlamaya başladım. Bu, HikariConfig'te ayarlayabildiğim Spring Boot MetricRegistry'e bir referans almama izin verdi.

@Configuration 
public class DatasourceConfiguration { 

    @Value("${spring.datasource.username}") 
    private String user; 

    @Value("${spring.datasource.password}") 
    private String password; 

    @Value("${spring.datasource.url}") 
    private String dataSourceUrl; 

    @Value("${spring.datasource.driverClassName}") 
    private String driverClassName; 

    @Value("${spring.datasource.connectionTestQuery}") 
    private String connectionTestQuery; 

    @Autowired 
    private MetricRegistry metricRegistry; 

    @Bean 
    public DataSource primaryDataSource() { 
     Properties dsProps = new Properties(); 
     dsProps.setProperty("url", dataSourceUrl); 
     dsProps.setProperty("user", user); 
     dsProps.setProperty("password", password); 

     Properties configProps = new Properties(); 
     configProps.setProperty("connectionTestQuery", connectionTestQuery); 
     configProps.setProperty("driverClassName", driverClassName); 
     configProps.setProperty("jdbcUrl", dataSourceUrl); 

     HikariConfig hc = new HikariConfig(configProps); 
     hc.setDataSourceProperties(dsProps); 
     hc.setMetricRegistry(metricRegistry); 
     return new HikariDataSource(hc); 
    } 
} 
7

Veya Bahar Boot sizin @ Yapılandırma/@ SpringBootApplication sınıfında DataSource ve MetricRegistry @Autowire, veri kaynağını yapılandırmak izin vermedi ve bir @PostConstruct bunları birlikte tel: İşte benim yapılandırma sınıfı var

@Autowired 
private DataSource dataSource; 

@Autowired 
private MetricRegistry metricRegistry; 


@PostConstruct 
public void setUpHikariWithMetrics() { 
    if(dataSource instanceof HikariDataSource) { 
     ((HikariDataSource) dataSource).setMetricRegistry(metricRegistry); 
    } 
} 
+0

Bu, inanıyorum ki, her şeyi sağlam tut ve sonunda metrikleri tak. Güzel cevap! –

+0

Bunu denediğimde, "java.lang.IllegalStateException" mesajını alıyorum: Havuz başlatıldığında yapılandırma yapılandırılmış. Çalışma zamanı değişiklikleri için HikariConfigMXBean kullanın. " –