创建Feign的消费者实例
- 创建项目,引入依赖
- 借助动态代理接口实现远程调用
- 比较Eureka,Ribbon和Feign的调用方式。
首先我们先创建一个ribbon-consumer的模块,并添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
然后创建启动类
我们这里添加上@EnableFeignClients
注解,表示开启远程调用。
然后创建配置文件:
spring:
application:
name: feign-consumer
server:
port: 40000
eureka:
client:
service-url:
defaultZone: http://localhost:20000/eureka/
我们来看,先前在我们的eureka-client模块中定义了一个sayHi的接口:
这里,我们尝试通过在feign-consumer模块中,尝试通过远程调用,来请求eureka-client里面的sayHi接口。
首先,我们定义一个Service:
这样,我们通过@FeignClient注解,声明远程调用的服务名称,然后在接口里通过@GetMapping
标注要调用的接口。
图中就表示远程调用eureka-client服务的/sayHi接口。
然后我们在Controller里把Service注入进来进行调用
紧接着启动我们的eureka-server、eureka-client以及feign-client,然后我们通过Postman访问feign-client的接口:
经过测试,我们不难发现,通过调用feign的接口,请求到了eureka-client的服务,说明我们的demo是没有问题的。