本文主要是介绍Hystrix实现Request Cache减压,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本篇配置类及其他代码可参考《Hystrix使用fallback完成消费降级》
我们在Hystrix下新建一个CacheService
@Slf4j
@Service
public class RequestCacheService {@Autowiredprivate MyService service;@CacheResult@HystrixCommand(commandKey = "cacheKey")public Friend requestCache(@CacheKey String name) {log.info("request cache " + name);Friend friend = new Friend();friend.setName(name);friend = service.sayHiPost(friend);log.info("after requesting cache " + name);return friend;}
}
建立一个测试Controller,在这里我们尝试调用两次requestCache()
@GetMapping("/cache")
publicFriend cache(String name) {@Cleanup HystrixRequestContext context = HystrixRequestContext.initializeContext();Friend friend = requestCacheService.requestCache(name);friend = requestCacheService.requestCache(name);return friend;
}
启动项目,我们调用localhost:50000/cache?name=王老五
可以看到Feign的日志中,只触发了一次调用
我们对cache()
函数稍微做一点修改
@GetMapping("/cache")
publicFriend cache(String name) {@Cleanup HystrixRequestContext context = HystrixRequestContext.initializeContext();Friend friend = requestCacheService.requestCache(name);name += "!";friend = requestCacheService.requestCache(name);return friend;
}
重启项目,再次请求,这时候能看到Feign中触发了两次调用
说明@CacheKey
已经生效了,在传入相同key时,触发了Hystrix的缓存!
这篇关于Hystrix实现Request Cache减压的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!