首先描述下场景:A订单服务 B视频服务,当订单服务调用视频服务的时候因某些原因触发了流控或者熔断,那么订单服务获取到视频服务的接口将会是500等不友好的信息。
比如这种:
现在可以通过Feign,给出现这种情况的调用返回一些兜底结果,代码如下:
引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
开启Feign对Sentinel的支持
feign:
sentinel:
enabled: true
创建容错类, 实现对应的服务接口, 记得加注解 @Service
容错类和对应的接口可以一样,容错对应的接口就可以了。内容可以按照自己想要展示的来定义
举例:
import net.wnn.domain.Video;
import net.wnn.service.VideoService;
import org.springframework.stereotype.Service;
@Service
public class VideoServiceFallback implements VideoService {
@Override
public Video findById(int videoId) {
Video video = new Video();
video.setTitle("这个是Fallback里面的视频");
return video;
}
@Override
public int save(Video video) {
return 0;
}
}
配置feign容错类:fallback = VideoServiceFallback.class
这样就有兜底数据返回啦,下游接口出错的时候,不至于返回500等太不友好了。