如何在 Play 2.5 HikariCP 中启用 Dropwizard 指标?
How to enable Dropwizard Metrics in Play 2.5 HikariCP?
Play 2.5 中使用的 HikariCP 数据库连接池supports Dropwizard Metrics。推荐的方法是使用 HikariConfig.setMetricRegistry(MetricRegistry)
,但 Play 似乎没有为 HikariConfig 使用依赖注入。是否有其他选项可以在 Play HikariCP 上设置 MetricRegistry?
您可以使用
访问 HikaryDatasource
@Singleton
class InitMetricRegistry @Inject () (@NamedDatabaseProvider("default") val defaultDB: Database){
val ds: HikariDataSource = defaultDB.dataSource.asInstanceOf[HikariDataSource]
ds.setMetricRegistry(???)
}
要在启动时初始化指标,请使用急切绑定
https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection#Eager-bindings
使用@JonasAnso 提到的相同方法解决了这个问题。这是 Java 片段。
public class AppInitProcessor {
@Inject
public AppInitProcessor(Database db, MetricRegistry metricRegistry) {
if (db.getDataSource() instanceof HikariDataSource) {
HikariDataSource dataSource = ((HikariDataSource) db.getDataSource());
if (dataSource.getMetricRegistry() == null) {
dataSource.setMetricRegistry(metricRegistry);
}
}
}
}
AppInitProcessor 随后被绑定为来自自定义 Guice 模块的热切单例。
MetricRegistry metrics = new MetricRegistry();
// configure MetricsRegistry ...
bind(MetricRegistry.class).toInstance(metrics);
// bind app startup
bind(AppInitProcessor.class).asEagerSingleton();
Play 2.5 中使用的 HikariCP 数据库连接池supports Dropwizard Metrics。推荐的方法是使用 HikariConfig.setMetricRegistry(MetricRegistry)
,但 Play 似乎没有为 HikariConfig 使用依赖注入。是否有其他选项可以在 Play HikariCP 上设置 MetricRegistry?
您可以使用
访问 HikaryDatasource@Singleton
class InitMetricRegistry @Inject () (@NamedDatabaseProvider("default") val defaultDB: Database){
val ds: HikariDataSource = defaultDB.dataSource.asInstanceOf[HikariDataSource]
ds.setMetricRegistry(???)
}
要在启动时初始化指标,请使用急切绑定 https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection#Eager-bindings
使用@JonasAnso 提到的相同方法解决了这个问题。这是 Java 片段。
public class AppInitProcessor {
@Inject
public AppInitProcessor(Database db, MetricRegistry metricRegistry) {
if (db.getDataSource() instanceof HikariDataSource) {
HikariDataSource dataSource = ((HikariDataSource) db.getDataSource());
if (dataSource.getMetricRegistry() == null) {
dataSource.setMetricRegistry(metricRegistry);
}
}
}
}
AppInitProcessor 随后被绑定为来自自定义 Guice 模块的热切单例。
MetricRegistry metrics = new MetricRegistry();
// configure MetricsRegistry ...
bind(MetricRegistry.class).toInstance(metrics);
// bind app startup
bind(AppInitProcessor.class).asEagerSingleton();