服务消费者还有一种落地实现是Feign,Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果,并且整合了Hystrix,具有熔断的能力。
创建Feign服务
新建一个SpringBoot模块,取名:eureka-feign,过程同前两篇,pom文件依旧继承父类并引入Feign依赖spring-cloud-starter-feign、Eureka依赖spring-cloud-starter-netflix-eureka-client、Web依赖spring-boot-starter-web,代码如下:
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
application.yml的注册地址依然是http://localhost:8761/eureka/,端口号为 8765,具体代码如下:
1 | eureka: |
在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:
1 |
|
定义一个Feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务(声明式调用)。比如在代码中调用了eureka-service服务的“/hi”接口,代码如下:
1 | /** |
写一个Controller类进行测试,对外暴露一个”/hi”的API接口,调用Feign客户端的FeignServiceClient来消费服务。
1 |
|
启动服务
启动 eureka-server,端口为 8761
- 启动 eureka-client,端口为 8762,8763
- 启动 eureka-feign,端口为 8765
1 | hi kn,i am from port:8762 |
结尾
这一篇的操作并没有遇到什么问题,根据Fegin的使用情况比较rest+Ribbon,总体感觉上Feign的声明式调用操作起来更加舒服。大牛的原文链接地址:http://blog.csdn.net/forezp/article/details/81040965