Изменение секунд timeToIdle и timeToLive для кэша Grails Hibernate 2-го уровня - PullRequest
0 голосов
/ 29 января 2020

У меня есть несколько классов домена Grails, и я включил кэш второго уровня Hibernate, установив cache: true в блоке mappings.

Время по умолчанию timeToIdle & timeToLive составляет 120 секунд, т.е. 2 минуты, которые не подходят для производственного использования.

Я хочу изменить эти настройки на 24 часа. Я знаю, я могу обновить это, используя ehcache.xml конфигурацию, но как я могу это сделать в Grails? В основном, где поместить этот файл в Grails 3?

Нужно ли использовать плагины Grails cache & ehcache, как предлагается здесь Лучшая стратегия для кэширования дорогостоящего вызова веб-службы в Grails ?

Хотя после исследования и чтения я смог добиться того же, используя следующий метод в Bootstrap.groovy:

class BootStrap {

    private static final HOURS = 1 * 60 * 60


    def init = {
        updateEhCacheConfigurations()
    }

    /**
     * Ehcache is used by default by Hibernate 2nd level cache. But the default "timeToIdle" and "timeToLive" time are 2 minutes. This
     * method will increase those.
     *
     * https://github.com/hibernate/hibernate-orm/blob/5.1.16/etc/ehcache.xml#L40
     * https://www.ehcache.org/documentation/2.7/configuration/data-life.html
     *
     * @author Shashank Agrawal
     */
    private void updateEhCacheConfigurations() {
        CacheManager.getInstance().getConfiguration().getCacheConfigurations().each { String name, CacheConfiguration config ->
            log.debug "Updating cache configuration for $name"

            config.setTimeToIdleSeconds(8 * HOURS)    // 8 hours
            config.setTimeToLiveSeconds(24 * HOURS)    // 24 hours
        }
    }
}

Это будет распечатывать журналы, такие как:

2020-01-29 18:13:37.628 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.product.CategorySection
2020-01-29 18:13:37.658 DEBUG com.wizpanda.BootStrap : Updating cache configuration for org.hibernate.cache.spi.UpdateTimestampsCache
2020-01-29 18:13:37.658 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.product.Category
2020-01-29 18:13:37.659 DEBUG com.wizpanda.BootStrap : Updating cache configuration for org.hibernate.cache.internal.StandardQueryCache
2020-01-29 18:13:37.659 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.user.Role
...