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
8
A
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);
}
}
Sądzę, że lepiej, żeby wszystko pozostało nietknięte, a na końcu podłącz metryki. Niezła odpowiedź! –
Kiedy próbuję tego, otrzymuję "java.lang.IllegalStateException: konfiguracja puli jest zapieczętowana po uruchomieniu. Użyj HikariConfigMXBean do zmiany środowiska wykonawczego." –