加入依赖(之前已经在3个服务都加过了)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
开启Feign对Sentinel的支持
//在订单服务中添加
feign:
sentinel:
enabled: true
改造订单服务的OrderService接口
//此接口的注解添加一个fallback参数并指定一个类
@FeignClient(name="class-video-service", fallback = OrderServiceFallBack.class)
public interface OrderService {
//写上路径,自动会携带参数
@GetMapping("/api/v1/video/find_by_id")
Video findById(@RequestParam("videoId") int videoId);
//插入 - 传递对象到视频服务
@PostMapping("/api/v1/video/insert")
void insert(@RequestBody Video video);
}
新增OrderServiceFallBack.java
import com.study.pojo.Video;
import com.study.service.OrderService;
import org.springframework.stereotype.Service;
//实现OrderService接口
@Service
public class OrderServiceFallBack implements OrderService {
//假设调用视频服务宕机,此处准备一个默认的视频返回
@Override
public Video findById(int videoId) {
//准备兜底数据
Video video = new Video();
video.setTitle("熔断降级数据");
return video;
}
@Override
public void insert(Video video) {
}
}
启动测试
1.启动视频服务和订单服务,访问:
http://localhost:8000/api/v1/video_order/save?video
2.将视频服务停止,访问:
http://localhost:8000/api/v1/video_order/save?video
返回的是兜底数据,不会返回500错误