基になる CacheLoaderWriter が失敗した (例外をスローした) 場合に、キャッシュが「期限切れの」データを返すように Ehcache を設定することは可能ですか?
私のテストによると、特定のキャッシュ エントリの有効期限が切れていて、CacheLoaderWriter がデータの読み込みに失敗した場合、キャッシュは null を返します。
ただし、私の場合、期限切れのキャッシュ データを返す方が何もないよりはましです。私が回避策として行っているのは、最新の正常にロードされたデータを CacheLoaderWriter に格納することです。そのため、ロードの新しい実行が失敗した場合は、このコピーを返します。とにかく、CacheLoaderWriter に別のコピーを保持するのではなく、何らかの形で、既にキャッシュにあるデータを返す方が「メモリ効率」が高いと考えてください。
私はehcache 3.4.0を使用しています
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("myCacheName",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class, ResourcePoolsBuilder.heap(100))
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(4, TimeUnit.HOURS)))
.withLoaderWriter(new TestCacheLoaderWriter()))
.build();