Skip to content

新版Sentinel整合OpenFeign配置

加入依赖(之前已经在3个服务都加过了)

xml
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

开启Feign对Sentinel的支持

yaml
//在订单服务中添加

feign:
  sentinel:
    enabled: true

改造订单服务的OrderService接口

java
//此接口的注解添加一个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

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) {

    }
}

启动测试

java
1.启动视频服务和订单服务,访问:
http://localhost:8000/api/v1/video_order/save?video

2.将视频服务停止,访问:
http://localhost:8000/api/v1/video_order/save?video

返回的是兜底数据,不会返回500错误