- 导入依赖
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/
转载文章受原作者版权保护。转载请注明原作者出处!