Кэш кофеина метод refreshAfterWrite, выбрасывающий refreshAfterWrite, требует исключения LoadingCache

У меня есть требование повторно кэшировать кэш с истекшим сроком действия путем повторного вызова API

Ниже моя конфигурация диспетчера кэша

                private CaffeineCache buildCache(String name, Ticker ticker, int minutesToExpire) {
    return new CaffeineCache(name, Caffeine.newBuilder()
                .refreshAfterWrite(minutesToExpire, TimeUnit.MINUTES)
                .maximumSize(100)
                .ticker(ticker)
                .build());

Но при запуске приложения выдает следующее исключение

Вызывается: java.lang.IllegalStateException: refreshAfterWrite требует LoadingCache

0 ответов

Вам необходимо предоставить CacheLoader дляbuild метод.

return new CaffeineCache(
        name,
        Caffeine.newBuilder()
                .refreshAfterWrite(minutesToExpire, TimeUnit.MINUTES)
                .maximumSize(100)
                .ticker(ticker)
                .build(key -> createExpensiveObject(key))
);

CacheLoader - это класс / метод, который должен быть реализован вами.

Другие вопросы по тегам