springcloud微服务架构开发实战:常见微服务的消费者( 二 )


在micro-weather-eureka-client应用基础上 , 我们稍作修改 , 使其成为一个新的应用mi-cro-weather-eureka-client-ribbon,作为本章节的示例 。
1.所需环境
为了演示本例子 , 需要采用如下开发环境 。
JDK 8 。
Gradle 4.0 。
● redis 3.2.100 。
● Spring Boot 2.0.0.M3 。
●Spring Cloud Starter Netlix Eureka Client Finchley.M2 。
●Spring Cloud Starter Netilix Ribbon 。
2.项目配置
要使用Ribbon,最简单的方式莫过于添加Ribbon依赖 。
//依赖关系dependencies {//添加Spring Cloud Starter Netflix Ribbon依赖compile (' org. spr ingframework. cloud: spring-cloud-starter-netflix-rib-bon')}3.启用Ribbon
Spring Cloud提供了声明式@RibbonClient注解来使用Ribbon 。
package com. waylau. spring. cloud. weather . config;import org. springframework.beans. factory . annotation. Autowired;import org. spr ingf r amework. boot. web. cl ient. RestTemplateBuilder;import org. springfr amework. cloud.client. loadbalancer .LoadBalanced;import org.spr ingframework .cloud. netflix. ribbon. RibbonCl ient;import org. spr ingfr amework. context. annotation. Bean;import org. springfr amework.context. annotation. Configuration;import org. springframework. web. client. RestTemplate;t REST配置类.* @since 1.0.0 2017年11月03日k Cauthor <a href=https://www.isolves.com/it/cxkf/jiagou/2020-09-11/"https: / /waylau. com">Way Lau@Configuration@RibbonClient (name = "ribbon-client", configuration = RibbonConfiguration.class)public class RestConfiguration {@Autowi redprivate RestTemplateBuilder builder;@Bean@LoadBalancedpublic RestTemplate restTemplate () {return builder .build() ;}}其中RibbonConfiguration是Ribbon自定义的配置类 , 定义如下 。
/ ***/package com. waylau. spring.cloud . weather . config;import org. spr ingframework.cloud.netflix. ribbon. ZonePreferenceServerListFilter;import org. springfr amework. context. annotation. Bean;import org. springframework. context. annotation. Configuration;import com. netflix. loadbalancer. IPing; import com. netflix. loadbalancer . PingUrl;/**城市配置.* @since 1.0.0 2017年11月3日 @author <a href=https://www.isolves.com/it/cxkf/jiagou/2020-09-11/"https://waylau. com">Way Lau@Configurationpublic class RibbonConfiguration {@Beanpublic ZonePreferenceServerListFilter serverListFilter() {ZonePreferenceServerListFilter filter = new ZonePreferenceServer-ListFilter ()filter .setZone ("myZone") ;return filter;@Beanpublic IPing ribbonPing() {return new PingUrl () ;}}这样 , 我们就能通过应用名称msa-weather-city -eureka来访问微服务了 , 并且还实现了服务的负载均衡 。
4.使用Ribbon
编写CityController,用于使用Ribbon配置的RestTemplate 。
import org. springframework. beans. factory . annotation. Autowired;import org . springf ramework. web. bind. annotation. GetMapping;import org.spr ingframework . web. bind. annotation. RestController;import org. springf ramework. web. cl ient . RestTemplate;/**City Controller .* @since 1.0.0 2017年11月03日@author <a href=https://www.isolves.com/it/cxkf/jiagou/2020-09-11/"https:/ /waylau. com">Way Lau@RestController public class CityController@Autowiredprivate RestTemplate res tTemplate;@GetMapping ("/cities")public String listCity() {//通过应用名称来查找String body = restTemplate . getForEntity ("http:/ /msa-weather-city-eureka/cities", String.class) .getBody() ;return body;}}5.应用配置
该应用同时也是一个 Eureka Client 。修改application.properties,将其修改为如下配置 。
spring. application. name: micro-weather -eureka-client-ribbon eureka. client. serviceUrl .defaultZone: http://localhost:8761/eureka/
FeignFeign是一- 个声明式的Web服务客户端 , 这使Web服务客户端的写人更加方便 。它具有可插拔注解支持 , 包括Feign注解和JAX-RS注解 。Feign 还支持可插拔编码器和解码器 。Spring Cloud增加了对Spring MVC注解的支持 , 并且使用了在Spring Web中默认使用的相同的HttpMessageCon-verter 。在使用Feign时 , Spring Cloud集成了Ribbon 和Eureka 来提供负载平衡的HTTP客户端 。
在micro-weather-eureka-client应用基础上 , 我们稍作修改 , 使其成为一个新的应用mi-cro-weather- eureka-client-feign,作为本节的示例 。
1.所需环境
为了演示本例子 , 需要采用如下开发环境 。
●Gradle 4.0 。
●Redis 3.2.100 。
●Spring Boot 2.0.0.M3 。
●Spring Cloud Starter Netflix Eureka Client Finchley.M2 。
●Spring Cloud Starter OpenFeign Finchley.M2 。
2.项目配置
为了使用Feign,增加如下配置 。
dependencies {//添加Spring Cloud Starter OpenFeign依赖compile('org. spr ingframework. cloud:spring-cloud-starter-openfeign')}


推荐阅读