OpenFeign使用手册
OpenFeign集成Nacos
- 引入相关OpenFeign和Nacos的相关依赖
xml
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--服务均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--nacos服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>- 在应用配置文件application.properties中配置nacos服务器信息
properties
spring.application.name=feign-spring-cloud-study
spring.cloud.nacos.server-addr=127.0.0.1:8848- 使用
@EnableFeignClients开启feign功能,使用@EnableDiscoveryClient开启nacos服务发现功能。
java
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}- 使用@FeignClient注解定义服务接口,注解参数为服务名称。
java
@FeignClient("nacos-spring-cloud-study")
public interface NacosGetConfigService {
@GetMapping("/getConfig")
String getConfig();
}- 注入服务接口,像调用方法一样调用远端服务。
java
@FeignClient("nacos-spring-cloud-study")
public interface NacosGetConfigService {
@GetMapping("/getConfig")
String getConfig();
}Spring Cloud下Fegin适配Sentinel实现限流
- 引入OpenFeign和Sentinel的依赖
xml
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--服务均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--nacos服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>- 应用配置文件applicaiton.properties开启feign的sentinel支持
properties
server.port=8082
spring.application.name=feign-spring-cloud-study
spring.cloud.nacos.server-addr=127.0.0.1:8848
spring.cloud.sentinel.transport.port=8719
spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080
feign.sentinel.enabled=true- 使用@FeignClient注解服务接口,配置fallback容错类。
java
@FeignClient(value = "nacos-spring-cloud-study", fallback = NacosGetConfigServiceFallBack.class)
public interface NacosGetConfigService {
@GetMapping("/getConfig")
String getConfig();
}- 创建实现服务接口的容错类,注册到spring容器中。
java
@Component
public class NacosGetConfigServiceFallBack implements NacosGetConfigService {
@Override
public String getConfig() {
return "getConfig() 限流中";
}
}- 在sentinel控制台中配置资源的限流规则。
