Spring Cloud服务消费
Ribbon和Feign都可以实现服务消费。上一部分的server用于发现服务,client提供服务。这里的Ribbon或Feign都是使用cllient提供的服务。当client不止一个示例,是一个集群的时候,Ribbon和Feign都内置支持负载均衡。
Ribbon
新建模块ribbon,添加两个依赖Server和Ribbon。
添加一些简单的配置:
ribbon/src/main/resources/Application.yml
给RibbonApplication类加上两个注解@EnableEurekaClient和@EnableDiscoveryClient,让服务可以被发现,并且声明是一个服务消费者,同时还要注入一个Bean:
ribbon\src\main\java\net\smallyu\java\ribbon\RibbonApplication.java
将RestTemplate注入到IOC容器。@LoadBalanced注解开启了负载均衡。这里无法体现,可以在8762启动client2实例后,修改配置端口为8763,启动多实例,模拟集群。
新建一个控制器,调用自动装配的RestApplication类,消费8762端口的service-hi服务:
ribbon\src\main\java\net\smallyu\java\ribbon\HelloController.java
程序会自动将服务名SERVICE-HI解析为服务地址。服务名是便于多实例,使用负载均衡的配置。
访问 http://localhost:8764/hi ,页面会打印出在8762端口的服务内容 Hello World。
Feign
新建模块feign,依赖为Server和Feign。配置文件类似:
feign\src\main\resources\Application.yml
FeignApplication的内容不需要多做修改,只要添加三个注解:
feign\src\main\java\net\smallyu\java\feign\FeignApplication.java
使用Feign需要新建一个接口:
feign\src\main\java\net\smallyu\java\feign\SchedualServiceHi.java
@FeignClient的参数为服务名,sayHelloFromClient是个随意的方法名,重在其上的RequestMapping。
使用控制器调用方法:
feign\src\main\java\net\smallyu\java\feign\HiController.java
SchedualServiceHi会在程序运行时自动装配。这里从Feign消费者8765的hi路由调用了service-hi的hi路由。
访问 http://localhost:8765/hi ,依然可以看到Hello World。Feign默认开启负载均衡。
参考: