Sentinel服务熔断[OpenFegin]
2021-09-10 本文已影响0人
CodeYang
消费侧
- 修改pom,引入相关依赖 openfegin
<!-- 远程调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 修改 application.yml 启用 sentinel 对 openfegin的支持
#激活 Sentinel对fegin的支持
feign:
sentinel:
enabled: true
- 启动类 启用 OpenFegin
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApp81 {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp81.class);
}
}
- 创建 openFegin 远程调用接口 ConsumerService
@FeignClient(value = "cloud-provider",fallback = ConsumerFallBackService.class)
public interface ConsumerService {
@RequestMapping("/provider/hello/{name}")
public String hello(@PathVariable("name") String name);
}
- 创建服务降级类继承ConsumerService
如果远程服务(服务提供者)出现问题了,这边兜底方法
/**
* 如果远程服务(服务提供者)出现问题了,这边兜底方法
*/
@Component
public class ConsumerFallBackService implements ConsumerService{
@Override
public String hello(String name) {
return "444,服务降级返回";
}
}
- 服务提供者,ProviderController 提供访问路径
@RestController
public class ProviderController {
@Value("${server.port}")
private String port;
@RequestMapping("/provider/hello/{name}")
public String hello(@PathVariable("name") String name){
return name+" Welcome To ProviderController "+port;
}
}
-
测试,正常情况下
正常返回 -
异常情况下:关闭服务提供者服务,测试
服务进行了降级处理
服务降级
- 修改服务提供者代码,使之内部异常,添加:int a=10/0
服务进行了降级处理
@RestController
public class ProviderController {
@Value("${server.port}")
private String port;
@RequestMapping("/provider/hello/{name}")
public String hello(@PathVariable("name") String name){
int a=10/0;
return name+" Welcome To ProviderController "+port;
}
}
服务降级