3.结果是否被缓存
若当前命令的请求缓存功能是被启用的,并且该命令缓存命中,那么缓存的结果会立即以Observable对象的形式返回。
public class CacheMain {
public static void main(String[] args) {
HystrixRequestContext ctx=HystrixRequestContext.initializeContext();
String key="cache-key";
CacheCommand c1=new CacheCommand(key);
CacheCommand c2=new CacheCommand(key);
CacheCommand c3=new CacheCommand(key);
c1.execute();
c2.execute();
c3.execute();
System.out.println("c1"+c1.isResponseFromCache());
System.out.println("c3"+c3.isResponseFromCache());
System.out.println("c2"+c2.isResponseFromCache());
HystrixRequestCache cache=HystrixRequestCache.getInstance(HystrixCommandKey.Factory.asKey("MyCommandKey"), HystrixConcurrencyStrategyDefault.getInstance());
cache.clear(key);
CacheCommand c4=new CacheCommand(key);
c4.execute();
System.out.println("c4"+c4.isResponseFromCache());
ctx.close();
}
static class CacheCommand extends HystrixCommand<String>{
private String cacheKey;
public CacheCommand(String cacheKey){
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestGroupKey"))
.andCommandKey(HystrixCommandKey.Factory.asKey("MyCommandKey")));
this.cacheKey=cacheKey;
}
protected String run(){
System.out.println("执行方法");
return "success";
}
protected String getFallback(){
System.out.println("执行回退");
return "fallback";
}
protected String getCacheKey(){
return this.cacheKey;
}
}
}