feign中对ribbon的配置
主要是在ribbon-core.jar文件下,com.netflix.client.config包下,其中DefaultClientConfigImpl类为默认配置
配置客户端和负载均衡器的最简单方法是符合特定格式的属性:
<clientName>.<namespace>.< propertyName > = <value>
可以在类路径或作为系统属性的文件中定义属性
默认情况下,“ribbon”应该是namespace。
如果没有为指定的客户端指定属性,com.netflix.client.ClientFactory仍然会为所有必需的属性创建客户端和负载均衡器。默认值在这个类中指定为常量。
如果一个属性丢失了clientName,那么它将被解释为一个适用于所有客户端的属性。例如
ribbon.ReadTimeout = 1000
这将为所有客户端建立默认的ReadTimeout属性。
您还可以通过构造DefaultClientConfigImpl的实例来编程设置属性。
如果希望在不同的名称空间中定义属性,例如“foo”
myclient.foo.ReadTimeout = 1000
feign中对hystrix的配置
在对hystrix进行配置之前首先要确认feign.hystrix.enabled参数设置为true(开起Hystrix熔断器保护),否则参数设置会关闭Feign客户端的hystrix,其主要的配置是对HystrixCommand的配置,是在hystrix-core.jar文件下com.netflix.hystrix.HystrixCommandProperties类中,如下截图为某些参数配置
如配置全局的超时时间:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000//默认为1000ms即1s
服务调用者
改造服务调用者
controller
/**线程睡眠主要演示ribbon的服务重试机制,当超过消费者配置的连接超时时,进行第二次重连 * 不接收参数 * @return * @throws InterruptedException */ @SuppressWarnings("deprecation") @RequestMapping(value = "/hello1", method = RequestMethod.GET) public String hello() throws InterruptedException { ServiceInstance instance = client.getLocalServiceInstance(); logger.info("/hello1,host:{},service_id:{}",instance.getHost(),instance.getServiceId()); //测试超时 int sleep = new Random().nextInt(3000); logger.info("sleep time:{}",sleep); Thread.sleep(sleep); return "hello spring cloud"; }
启动类服务消费者
package com.niugang; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; /** * feign版消费者 * * @author niugang * */ @SpringBootApplication @EnableDiscoveryClient //扫描声明它们是feign客户端的接口(通过@FeignClient) @EnableFeignClients public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
配置
调用服务接口
服务降级类
controller
测试
启动注册中心,启动服务类,启动消费者
从控制台打印的日志可以看书,但线程睡眠超过2000ms时,消费者会常识第二次重连。
当停掉服务提供者:
输入:http://localhost:9001/feign-consumer
执行相应的服务降级函数
输入:http://localhost:9001/feign-consumer1/zhangsan
执行相应的服务降级函数
微信公众号