8

Przeczytanie instrukcji na wiki HikariCP o włączaniu metryk Dropwizarda, oznacza to po prostu skonfigurowanie instancji MetricsRegistry w HikariConfig lub HikariDatasource. Problem polega na tym, że w Spring Boot cała konfiguracja jest obsługiwana przez autokonfigurację, więc w ogóle nie konfiguruję ręcznie puli HikariCP. Wszelkie instrukcje, jak to zrobić? Czy muszę całkowicie przesłonić autokonfigurację, definiując własny komponent bean i ustawiając wszystkie ustawienia w pliku @Configuration?Jak skonfigurować dane HikariCP i Dropwizard/Coda-Hale w aplikacji Spring Boot

Odpowiedz

8

Więc udało mi się to rozwiązać ręcznie, konfigurując HikariCP w pliku konfiguracyjnym java. To pozwoliło mi uzyskać odniesienie do Spring Boot MetricRegistry, które mogłem następnie ustawić w HikariConfig. Oto moja klasa konfiguracja:

@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

Albo niech Wiosna Boot skonfigurować źródło danych, @Autowire DataSource i MetricRegistry w swojej konfiguracji/@ @ klasy SpringBootApplication i drut je razem w @PostConstruct:

@Autowired 
private DataSource dataSource; 

@Autowired 
private MetricRegistry metricRegistry; 


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

Sądzę, że lepiej, żeby wszystko pozostało nietknięte, a na końcu podłącz metryki. Niezła odpowiedź! –

+0

Kiedy próbuję tego, otrzymuję "java.lang.IllegalStateException: konfiguracja puli jest zapieczętowana po uruchomieniu. Użyj HikariConfigMXBean do zmiany środowiska wykonawczego." –

Powiązane problemy