Tôi đang cố gắng tìm ra cách hoạt động của Hystrix request caching nhưng không tuân theo wiki hoặc các ví dụ đầu cuối mà chúng cung cấp trong tài liệu của họ.Hystrix Yêu cầu Caching theo Ví dụ
Về cơ bản tôi có HystrixCommand
lớp con sau:
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);
}
}
Vì vậy, tôi cảm thấy như tôi đang đi ngược lại các hạt ở đây. Tôi tin rằng Hystrix cung cấp bộ nhớ đệm tích hợp, như được minh họa bằng một số 'cacheKey
', nhưng tôi không thể tìm thấy bất kỳ ví dụ hoạt động nào. Tôi không muốn phát minh lại bánh xe ở đây và xây dựng bộ nhớ đệm vào lệnh của tôi nếu một cái gì đó đã được cung cấp ra khỏi hộp.
Vì vậy, tôi hỏi: yêu cầu bộ nhớ đệm trông giống như thế nào với Hystrix (chính xác)? Các mục nhập được thêm vào bộ nhớ cache như thế nào? Làm thế nào/khi bộ nhớ cache đỏ ửng? Có thể định cấu hình (hết hạn, kích thước tối đa, v.v ...) không?
Bạn có thể đọc phần triển khai HystrixCommand. Điểm bắt đầu sẽ là phương thức [HystrixCommand.isResponseFromCache())] (http://grepcode.com/file/repo1.maven.org/maven2/com.netflix.hystrix/hystrix-core/1.3.3/com/ netflix/hystrix/HystrixCommand.java # HystrixCommand.isResponseFromCache()) (liên kết đến * grepcode.com *). – MicSim