Я хочу использовать ehcache не только как кеш, но и как контейнер грязных объектов, которые я хочу сбрасывать в мою базу данных, когда объекты выселяются / истекают.во время обычной обработки я использую ключ для поиска в ehcache.если ключа нет, я читаю данные из базы данных и помещаю их в ehcache.значение на самом деле сложный объект, который я изменяю.когда возникает условие ttl / idle time / overflow, я вижу, что обратные вызовы CacheEventListener запускаются.но есть большая проблема.notifyElementExpired вызывается после удаления значения ключа из кэша.таким образом, есть условие гонки.если я выполняю задачу сброса грязного значения в кэш в notifyElementExpired и в то же время в другом потоке происходит чтение по тому же ключу, то возникает проблема синхронизации.2-й поток не найдет объект в ehcache и, следовательно, перейдет в базу данных, пока другой поток все еще готов к сбросу.
Я попытался поэкспериментировать с сквозной записью ehcache, и я не думаю, что это тоже работает.
есть ли здесь решение ??
Я был бы очень признателен за хорошие решения этой проблемы, даже если бы она включала какой-то другой механизм кэширования, отличный от ehcache.
спасибо