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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值