Я пытаюсь понять, как работает кэширование запросов Hystrix, но я не слежу за вики или сквозные примеры, которые они предоставляют в своих документах.
По сути, у меня есть следующий подкласс HystrixCommand
:
public class GetFizzCommand extends HystrixCommand<Fizz> {
private Long id;
private Map<Long,Fizz> fizzCache = new HashMap<Long,Fizz>();
void doExecute(Long id) {
this.id = id;
execute();
}
@Override
public Fizz run() {
return getFizzSomehow();
}
@Override
public Fizz getFallback() {
// Consult a cache somehow.
// Perhaps something like a Map<Long,Fizz> where the 'id' is the key (?)
// If the 'id' exists in the cache, return it. Otherwise, give up and return
// NULL.
fizzCache.get(id);
}
}
Поэтому я чувствую, что иду здесь против течения. Я полагаю, что Hystrix предлагает встроенное кэширование, о чем свидетельствует 'cacheKey
', но я не могу найти рабочих примеров. Я не хочу здесь изобретать велосипед и встраивать кэширование в свои команды, если что-то уже предусмотрено из коробки.
Поэтому я спрашиваю: как выглядит кеширование запросов с Hystrix (точно)? Как записи добавляются в кэш? Как/когда очищается кеш? Можно ли его настроить (сроки действия, максимальные размеры и т. д.)?