版本需要sentinel 2021.1版本
父pom
<dependencyManagement> <dependencies> <!--alibaba cloud--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency>
结合openFeign时
服务降级:
setp1:子项目添加
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
子项目配置文件增加如下配置 feign: sentinel: enabled: true
在子项目控制层@sentinelResource
例子
@SentinelResource(value = "查询菜单",blockHandlerClass = {MenuBlockHandler.class},blockHandler = "getMenuListByAuth",fallback = "getMenuListByAuth",fallbackClass = {MenuFallBackHandler.class})
value用于指定sentinel dashboad中显示的名字
blockHandlerClass 指定限流异常处理类名称,不可单独使用,若指定,需要再指定blockHandler
blockHandler 执行限流异常时处理的方法,可单独使用,单独使用时必须用于当前类中
fallbackClass 指定出现异常时,指定执行方法的类名称,不可单独使用; 此处的异常指通过openFeign请求的业务出现异常,且openFeign上没有指定fallback
fallback 指定出现异常时,执行的方法,可单独使用
sentinel 与 openFeign都指定fallback时,优先执行openFeign的fallback逻辑,sentinel上面指定的fallback将无效