HikariCP veritabanı bağlantısı havuzu, Play 2.5 supports Dropwizard Metrics kullanılır. Önerilen yaklaşım, HikariConfig.setMetricRegistry(MetricRegistry)
'u kullanmaktır, ancak Play, HikariConfig için Bağımlılık Enjeksiyonu kullanmıyor gibi görünmektedir. MetricRegistry oyun HikariCP üzerinde ayarlamak için başka bir seçenek var mı?Nasıl Oynanır Dropwizard Metrics 2.5 PlayariCP?
3
A
cevap
2
Sen @JonasAnso bahsettiği aynı yaklaşımı kullanarak çözüldü hevesli bağlayıcı https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection#Eager-bindings
2
bu kullanmak başlangıçta ölçümleri başlatmak için
@Singleton
class InitMetricRegistry @Inject() (@NamedDatabaseProvider("default") val defaultDB: Database){
val ds: HikariDataSource = defaultDB.dataSource.asInstanceOf[HikariDataSource]
ds.setMetricRegistry(???)
}
kullanarak HikaryDatasource erişebilirler. İşte Java pasajı.
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, özel Guice modülünden istekli bir singleton olarak bağlanır.
MetricRegistry metrics = new MetricRegistry();
// configure MetricsRegistry ...
bind(MetricRegistry.class).toInstance(metrics);
// bind app startup
bind(AppInitProcessor.class).asEagerSingleton();
Teşekkürler. Aslında, dün yaptığım şey bu, çözümü (Java'da) ayrı bir cevap olarak göndereceğim. – bravo2
Bir şey değil. Java çözümü ile güzel iş. Oyun keyfini çıkarın. –