1、添加pom依赖(使用Hoxton.SR3版本feign中没有自动依赖Hystrix,需要我们手动添加)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2、yml中feign启动hystrix组件
feign:
hystrix:
enabled: true
3、启动类添加注解
@SpringBootApplication
@EnableFeignClients
@EnableHystrix
public class RibbonFeignApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonFeignApplication.class, args);
}
}
4、编写fallback(降级)方法类
package com.example.springcloud.ribbonfeign.fallback;
import com.example.springcloud.ribbonfeign.service.FeignTest1Service;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* FeignTest1Service:feign调用提供者的接口
* Created by py
* 2020/3/25
*/
@Component //PS:必须把该类作为组件放到容器中,不然熔断降级不生效
public class FeignTest1ServiceFallBack implements FeignTest1Service {
@Override
public String testFeign(Map<String, String> map) {
return "哎呀,熔断了";
}
}
5、feign接口添加配置参数
@FeignClient(name = "test1",path ="eureka-clinet1",fallback = FeignTest1ServiceFallBack.class)
public interface FeignTest1Service {
@RequestMapping(value = "/ribbonTest",method = RequestMethod.POST)
public String testFeign(@RequestBody Map<String,String> map);
}
6、controller调用
@RestController
public class SingleFeignController {
@Autowired
private FeignTest1Service feignTest1Service;
@RequestMapping("/singleFeign")
public String singleFeign(){
Map<String,String> map = new HashMap<String,String>(){{
put("name","ribboon-openFeign");
}};
String result = feignTest1Service.testFeign(map);
return result;
}
}
停掉提供者服务,进行请求: