首先引入依赖:
web
eureka client
test
feign的起步依赖:
Spring-cloud-starter-feign
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>配置 application.yml :端口号,程序名,注册地址。
spring:
application:
name: eureka-feign-client
server:
port: 8765
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/程序的启动类加上 @EnableFeignClients 注解开启 Feign Client 功能。
加上开启Eureka Client 功能的注解。
@EnableEurekaClient @EnableFeignClients
下面实现一个简单的 Feign Client
在新建的接口上加 @FeignClient 注解声明一个 Feign Client 其中 value 为远程调用的其他服务的服务名。
下面还要写一个 FeignClient 的配置类 FeignConfig.class 在 EurekaClientFeign 接口内部有一个 sayHiFromClientEureka() 方法 ,该方法通过Feign 来调用 客户端服务的 API 接口 。
@FeignClient(value = "eureka-client",configuration = FeignConfig.class)
public interface EurekaClientFeign {
@GetMapping(value = "/hi")
String sayHiFromClientEureka(@RequestParam(value = "name") String name);
}FeignConfig 类: 在该类上 加注解 @Configuration 注解表明是个配置类,
注入一个 bean 的名字为 feignRetryer 的 Retryer 的 Bean
这样,feign 在远程调用失败后会进行重试。
@Configuration
public class FeignConfig {
@Bean
public Retryer feignRetryer(){
return new Retryer.Default(100,1000,5);
}
}在 Server 层 的 类中 注入 EurekaClientFeign 的 Bean 通过他去调用 sayHiFromClientEureka() 方法:
@Service
public class HiService {
@Autowired
EurekaClientFeign eurekaClientFeign;
public String sayHi(String name){
return eurekaClientFeign.sayHiFromClientEureka(name);
}
}在 controller 层 加 @RestController 注解 写一个接口,调用 Server 层的 sayHi 方法。
这样 Hiserver 就可以通过 EurekaClientFeign 远程调用 eureka-client 服务的 API 接口了。
@RestController
public class HiController {
@Autowired
HiService hiService;
@GetMapping("/hi")
public String sayHi(@RequestParam(defaultValue = "ioenn",required = false) String name){
return hiService.sayHi(name);
}
}启动实例, 然后浏览器访问:
http://localhost:8761
看看服务注册 ,
然后 访问
http://localhost:8765/hi
浏览器会轮流显示,访问 两个服务的 API 打印的结果 。
可以看到 Feign 有负载均衡的能力。
该 Feign 依赖,还引入了 ribbon 和 Hystrix 依赖。

京公网安备 11010502036488号