1. 程式人生 > >申明式web服務客戶端 Feign配置ribbon與hystrix

申明式web服務客戶端 Feign配置ribbon與hystrix

feign配置ribbon

全域性配置

直接實用ribbon.<key>=<value>

如 ribbon.ConnectTimeout=500

ribbon.ReadTimeout=5000

指定服務配置

實用 <服務名>.ribbon.<key>=<value>

hello-service.ribbon.ConnectTimeout=500

hello-service.ribbon.ReadTimeout=5000

版本 spring boot 1.5.14

feign配置hystrix

具體詳細程式碼 請參考 申明式web服務客戶端 Feign 基本使用

服務降級配置:

helloService 介面

package springcloud.helloserviceapi;

import org.springframework.web.bind.annotation.*;

@RequestMapping("helloController")

public interface HelloService {

@RequestMapping(value = "/hello",method = RequestMethod.GET)

String hello();

@RequestMapping(value = "/hello1",method = RequestMethod.GET)

String hello(@RequestParam("name") String name);

@RequestMapping(value = "/hello2",method = RequestMethod.GET)

User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);

/* @RequestMapping(value = "/hello3",method = RequestMethod.POST)

String hello(@RequestBody User user);*/

}

調整feign介面

package springcloud.feign;

import org.springframework.cloud.netflix.feign.FeignClient;

import org.springframework.web.bind.annotation.*;

import springcloud.helloserviceapi.HelloService;

import springcloud.helloserviceapi.User;

@FeignClient(name = "hello-service",fallback = HelloServiceFallback.class)

public interface HelloServiceExtends extends HelloService{

}

新增 fallback介面

注意 @RequestMapping 必須要更 HelloService 的不一樣,否則會衝突

@RequestMapping("fallback/helloController")

package springcloud.feign;

import feign.hystrix.FallbackFactory;

import org.springframework.stereotype.Component;

import org.springframework.web.bind.annotation.*;

import springcloud.helloserviceapi.HelloService;

import springcloud.helloserviceapi.User;

@Component

@RequestMapping("fallback/helloController")

public class HelloServiceFallback implements HelloServiceExtends{

@Override

public String hello() {

return "error";

}

@Override

public String hello(String name) {

return null;

}

@Override

public User hello(String name, Integer age) {

return null;

}

}

結果:

請求壓縮

spring cloud feign 支援對請求與響應進行GZIP,以減少通訊過程中的效能損耗。我們只需要通過

下面兩個引數設定,就能開啟請求與響應的壓縮功能

feign.compression.request.enabled=true

feign.compression.response.enabled=true

feign 的屬性類

@ConfigurationProperties("feign.compression.request")

public class FeignClientEncodingProperties

參考 :

小馬哥 spring cloud 視訊

spring cloud微服務實戰(程式設計師DD)