Как настроить показатели Dropwizard/CodaHale для ehCache в приложении Spring Boot?

Итак, вот моя проблема. Мое приложение Spring Boot использует Hibernate/JPA и ehCache для кэширования 2-го уровня. Я хотел бы оснастить ehCache метриками Dropwizard/Coda-Hale, но я не совсем уверен, как это сделать. Если бы я вручную создавал экземпляры Cache, то это было бы просто. Вы просто используете декоратор, как показано здесь. Но так как это Spring/Hibernate, я не могу контролировать кеши. Любые идеи, как я могу настроить это?


person Kevin M    schedule 20.02.2015    source источник


Ответы (1)


Ну, кажется, я наконец понял это. Оказывается, добавление в Spring JavaConfig для cacheManager, возвращающего классы Spring, ehCacheCacheManager все еще можно использовать для доступа к базовым классам ehCache и их оформления. Вот как я заставил это работать

@Bean
public EhCacheCacheManager ehCacheCacheManager() {
    final EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager(ehCacheManagerFactoryBean().getObject());
    net.sf.ehcache.CacheManager cacheManager = ehCacheCacheManager.getCacheManager();
    String[] cacheNames = cacheManager.getCacheNames();
    for (String cacheName : cacheNames) {
        Cache cache = cacheManager.getCache(cacheName);
        cacheManager.replaceCacheWithDecoratedCache(cache, InstrumentedEhcache.instrument(metricRegistry, cache));
    }
    return ehCacheCacheManager;
}


@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {

    EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();

    cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
    cacheManagerFactoryBean.setShared(true);

    return cacheManagerFactoryBean;
}
person Kevin M    schedule 20.02.2015
comment
Да, и всякий раз, когда вы используете кеш в любом месте, вам нужно использовать собственный менеджер EhCache для вызова getEhCache вместо getCache, потому что getEhCache возвращает оформленный кеш, а вызов getCache — нет. См. ehcache. org/apidocs/2.8.4/net/sf/ehcache/ - person Philippe; 10.10.2017