有時候需要自定義Ribbon的配置和客戶端超時配置。
自動化配置
/* 使用屬性自定義功能區客戶端 從版本1.2.0開始,Spring Cloud Netflix現在支持使用屬性與Ribbon文檔兼容來自定義功能區客戶端。即從Camden版本之后,新增了org.springframework.cloud.netflix.ribbon.PropertiesFactory類動態的為RibbonClient創建這些接口的實現
public PropertiesFactory() {
classToProperty.put(ILoadBalancer.class, "NFLoadBalancerClassName");
classToProperty.put(IPing.class, "NFLoadBalancerPingClassName");
classToProperty.put(IRule.class, "NFLoadBalancerRuleClassName");
classToProperty.put(ServerList.class, "NIWSServerListClassName");
classToProperty.put(ServerListFilter.class, "NIWSServerListFilterClassName");
}
#服務名
<client-name>
參數配置
對於Ribbon參數配置通常有兩種方式:全局配置以及客戶端配置
全局配置:ribbon.<key>=<value>
指定客戶端配置:<client>.ribbon.<key>=<value>格式進行配置,client可以理解為服務名
**對於Ribbon參數的key以及value類型定義,可以查看com.netflix.client.config.CommonClientConfigKey類獲取更為詳細的配置內容
沒有服務治理框架的幫助,需要為該客戶端指定具體的實例清單,指定具體的服務名來做詳細的配置
<service-name>.ribbon.listOfServers=localhost:8001,localhost:8002,localhost:8003
與Eureka結合
1:變化
2:禁用Eureka對Ribbon服務實例的維護實現
ribbon.eureka.enabled=false
Ribbon重試機制
從Camden SR2版本開始,Spring Cloud整合Spring Retry來增強RestTemplate的重試能力。通過RestTemplate實現的服務訪問就會自動根據配置來實現重試機制
配置示例
springPOM添加·
<!--spring retry(let ribbon retry) need add spring boot aop starter-->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<!--spring boot starter aop-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
啟動類加上@EnableRetry注解。