Google Guava loadAll для частичной загрузки кеша - PullRequest
0 голосов
/ 04 октября 2019

Мне нужно кешировать объекты, возвращаемые сторонним сервисом отдыха. Я пытался изучить API CacheLoader.loadAll (), который прекрасно работает с getAll (), только когда все объекты, не найденные в кеше, могут быть успешно извлечены. Если у меня есть частичный случай, когда некоторые объекты выбираются, а некоторые не выбираются, чем этот контракт API-интерфейса (loadAll не удалось вернуть значение для ключа)

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

        this.cache = CacheBuilder.newBuilder().maximumSize(1000).build(new CacheLoader<String, NamedEntity>() {

            @Override
            public Map<String, NamedEntity> loadAll(Iterable<? extends String> keys) throws Exception {

                Map<String, NamedEntity> map = new ConcurrentHashMap<>();

                for (NamedEntity namedEntity : client.getNamedEntities(keys)) {
                    map.put(namedEntity.getYkId(), namedEntity);
                }

                return map;
            }
        });



        try {
            entities = cache.getAll(keys);
        } catch (Exception e) {
            e.printStackTrace();
        }



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