Ehcache не сбрасывается на диск при завершении процесса - PullRequest
0 голосов
/ 04 мая 2019

Я использую Springboot 2.1.3.RELEASE с Spring Cache и Ehcache.Я думаю, что версия по умолчанию для Ehcache в родительской помпе Springboot - 2.10.6.Я использую Cache для сохранения всех моих дорогих результатов запросов к кустам прямо на диск, и ehcache.xml выглядит так:

<diskStore path="D:\ehcache"/> 
    <defaultCache name="default"
            maxElementsInMemory="1"
            eternal="true"
            diskExpiryThreadIntervalSeconds="120"
                  overflowToDisk="true"
                  diskPersistent="true"
            memoryStoreEvictionPolicy="LRU">
    </defaultCache>

    <cache name="myCache"></cache>

Во время разработки приложения с IntelliJ я замечаю, что кэш теряется из-за потери временивремя, но иногда это нормально.Даже когда я не изменяю код, результат все равно может быть непредсказуемым.Мне потребовалось два дня эксперимента, и, наконец, я заметил, что если я нажму кнопку Exit вместо Stop (которую я использую всю свою карьеру в качестве разработчика Java), кэш-память не будет потеряна ни разу.Проблема в том, что, когда Intellij работает в режиме отладки, кнопка Exit отсутствует.Я провел свое исследование и обнаружил (не могу вспомнить, где), что он специально разработан таким образом, объяснение состоит в том, что при работе в режиме выполнения пользовательское приложение оборачивается определенной оболочкой, а последняя отвечает за получение запроса на выход.и действует в соответствии с этим, но в режиме отладки такой оболочки не существует, и следующая вещь, которую можно сделать, - это оценить System.exit (0), только когда пользовательское приложение приостановлено в точке останова.

Мой вопрос заключается в том, что, поскольку меня не волнует производительность, могу ли я сделать ehcache для сброса на диск каждый раз, когда объект сохраняется на нем?так что это становится Стоп / Убить сопротивление?Хотя я новичок в Ehcache, я много искал и не могу найти ничего плохого в моей конфигурации.Пожалуйста помоги.Спасибо.

1 Ответ

1 голос
/ 06 мая 2019

Дисковое хранилище Ehcache с открытым исходным кодом будет загружено только при следующем запуске, если оно было правильно закрыто .

Любой другой выход, из-за сбоя приложения, уничтожения или чего-либо еще, приведет к тому, что хранилище диска будет считаться грязным и, следовательно, оно будет удалено при следующем запуске.

Ehcache предлагает корпоративную версию с хранилищем дисков, защищенным от сбоев, но, как следует из названия, это больше не бесплатное предложение.

Подробнее см. в документации . Обратите внимание, что связанный документ предназначен для версии 3, но принципы те же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...