当前位置: 代码迷 >> 综合 >> springCould通过@Async标签异步方法中调用feign自动进入熔断函数????
  详细解决方案

springCould通过@Async标签异步方法中调用feign自动进入熔断函数????

热度:22   发布时间:2024-02-27 12:32:34.0

在SpringCould中通常需要各个模块之间的相互调用实现数据互通和业务逻辑

但是当使用异步标签@Async与@EableAsync的配合使用的时候,在@Async标注的异步方法中调用fegin会自动进入熔断函数。

在网上查阅资料发现@Async的方法不可以调用fegin

当生产者的接口,只是调用另外一个外部接口的作用的时候(即生产者只有你一个消费者),可以将被调用方法打上异步@Async标签,将消费者异步方法标签删除,也可实现异步效果。

我的代码情况如下

调用方:

 @Overridepublic 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;}

 

  相关解决方案