微服务中服务间通信

  • 导入依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

    org.springframework.cloud
    spring-cloud-starter-netflix-hystrix

  • 调用端(A服务)配置文件中开启熔断器
开启熔断器
feign.hystrix.enabled=true
设置熔断器超时时间,默认1000ms
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000
  • 调用端(A服务)创建上述为服务调用(VodClient)接口的实现类,并实现出错之后的功能方法
package com.xsha.eduservice.client;

import com.xsha.commonutils.R;
import com.xsha.servicebase.exceptionhandler.MyException;
import org.springframework.stereotype.Component;

import java.util.List;
@Component
public class VodFileDegradeFeignClient implements VodClient {
    @Override
    public R deleteAliyunVideo(String videoId) throws MyException {
        return R.error().message("删除视频出错了!");
    }

    @Override
    public R deleteVideoBatch(List videoList) throws MyException {
        return R.error().message("批量删除视频出错了!");
    }
}
  • 在接口上注解FeignClient中添加fallback属性及值 @FeignClient(name="service-vod", fallback=VodFileDegradeFeignClient.class)
  • 这时调用端(A服务)调用被调用端(B服务)的方法时,就可以根据返回值,根据需求完成更合理的接口(如抛出异常等)
R result = vodClient.deleteAliyunVideo(videoSourceId);
if(result.getCode() == 20001) {
    throw new MyException(20001, "删除视频失败,熔断器。。。");
}

Original: https://www.cnblogs.com/aitiknowledge/p/15947380.html
Author: xsha_h
Title: 微服务中服务间通信

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608794/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球