Ehcache: как условно вернуть устаревшие данные - PullRequest
0 голосов
/ 18 января 2019

Обычно, когда запись в кэше Ehcache превышает его ttl / tti, она будет помечена как устаревшая. Затем, когда кешу будет предложено вернуть эту устаревшую запись, запись будет удалена, а кеш вернет ноль. Вызывающий метод должен выйти в хранилище данных, чтобы получить новую запись для хранения в кэше.

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

Есть ли способ указать Ehcache целенаправленно возвращать устаревшие данные при определенных логических обстоятельствах (т.е. DatastoreMonitor возвращает isDown)?

1 Ответ

0 голосов
/ 22 января 2019

В итоге я реализовал свой собственный ConditionallyStaleCache extends Object. Конструктор принимает три аргумента - shortTermCache, backUpCache и Dao. Я сам реализовал всю логику «если Dao не работает, тогда вернемся из резервной копии», потому что я не думаю, что EhCache может сделать эту логику для меня.

Мне было бы любопытно узнать, есть ли лучший подход, но сейчас я использую это.

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