我是靠谱客的博主 虚心时光,最近开发中收集的这篇文章主要介绍springCould通过@Async标签异步方法中调用feign自动进入熔断函数????,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
在SpringCould中通常需要各个模块之间的相互调用实现数据互通和业务逻辑
但是当使用异步标签@Async与@EableAsync的配合使用的时候,在@Async标注的异步方法中调用fegin会自动进入熔断函数。
在网上查阅资料发现@Async的方法不可以调用fegin
当生产者的接口,只是调用另外一个外部接口的作用的时候(即生产者只有你一个消费者),可以将被调用方法打上异步@Async标签,将消费者异步方法标签删除,也可实现异步效果。
我的代码情况如下
调用方:
@Override
public void deleteInfoToIm(String ids) throws Exception {
String[] idList=ids.split(",");
for(String id:idList){
Map<String,Object> paramsMap = new LinkedHashMap<String,Object>();
paramsMap.put("userId",id);
paramsMap.put("ImFlag","4");
//调用im接口
syncToImApiFeignClient.SyncUserToImApi(paramsMap);
}
}
@FeignClient(name="${feign.client.XXXXX.name}",
fallback= XXXXXFeignClientHystrix.class,
path = "${feign.client.XXXX.path}")XXXX
public interface SyncToImApiFeignClient {
@PostMapping("/XXXXXCtrl/doOrgSynUpdate")
JsonResult SyncOrgToImApi(@RequestBody Map<String, Object> map) throws Exception;
@PostMapping("/XXXXXCtrl/doUserSynUpdate")
JsonResult SyncUserToImApi(@RequestBody Map<String, Object> map) throws Exception;
}
被调用方:
@Async
@PostMapping("/doOrgSynUpdate")
public JsonResult doOrgSynUpdate(@RequestBody Map<String,Object> params){
JsonResult result = null;
try {
if(AegisCommonUtils.isNull(params.get("orgId"))
||AegisCommonUtils.isNull(params.get("ImFlag"))){
return JsonResultUtils.getFailInstance("参数错误");
}
result = XXXXXXService.doOrgSynUpdate(params);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
最后
以上就是虚心时光为你收集整理的springCould通过@Async标签异步方法中调用feign自动进入熔断函数????的全部内容,希望文章能够帮你解决springCould通过@Async标签异步方法中调用feign自动进入熔断函数????所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复