zoukankan      html  css  js  c++  java
  • SpringCloud Feign 配置(基于Consul)

    一.基础配置

      1.引入依赖

         <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
           
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>

       2.创建主类,通过 @EnableFeginClients 注解开启 Feign 功能

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

        3.定义AService接口,通过 @FeignClient 注解指定服务名来绑定服务, 然后使用SpringMVC 的注解来绑定具体该服务提供的 REST 接口

    @FeignClient("aservice")  //这里的服务名不区分大小写
    public interface AService {
        @PostMapping("/hello")
        String hello();
    }

        需要调用 AService 时,在类中使用 @Autowired 注解直接注入 AService 实例, 并调用 /hello 接口

    @RestController
    public class ConsumerController {
    
        @Autowired
        private AService aService;
    
        @RequestMapping("/test")
        public String test(){
            return aService.hello();
        }
    }

    二.参数绑定

    @FeignClient("aservice") 
    public interface AService {  
      @RequestMapping("/hello1")
       String hello1(@RequestParam("hello1") String hello1); 
      @RequestMapping("/hello2") 
      String hello2(@RequestHeader("hello2") String hello2)
      @RequestMapping("/hello3") 
      String hello2(@RequestBody User user)
    }

       

    @RestController
    public class BController{  
      @RequestMapping(value = "/hello1", method = RequestMethod.GET)
       String hello1(@RequestParam String hello1){
        return "hello";
      }
      @RequestMapping(value =
    "/hello2", method = RequestMethod.GET)   
      String hello2(@RequestHeader String hello2){
        return "hello";
      }
      
      @RequestMapping(value =
    "/hello3", method = RequestMethod.POST)   
      String hello3(@RequestBody User user){
        return "hello";
      }
    }

    三.Ribbon 配置

      由于 Feign 的客户端负载均衡是通过 Ribbon 实现的, 所以可以通过配置 Ribbon 客户端的方式来自定义各个服务客户端调用的参数.

      1.全局配置

        全局配置直接使用 ribbon.<key>=<value>的方式来设置 ribbon 的各项默认参数. 比如, 修改默认的客户端调用超时时间:  

    ribbon.ReadTimeout=5000
    ribbon.ConnectTimeout=500

       2.指定服务配置

         大多数情况下, 服务调用的超时时间会根据实际服务的特性做一些调整, 所以需要指定服务配置

         指定服务配置根据 <client>.ribbon.key=value 的格式进行配置

    aservice.ribbon.ReadTimeout=2000
    aservice.ribbon.ConnectTimeout=500

        3.重试机制

    ribbon.MaxAutoRetries=1
    ribbon.MaxAutoRetriesNextServer=2

         MaxAutoRetries 设置为1, 所以重试策略先尝试访问首选实例一次,失败后才会更换实例访问,而更换实例访问的次数通过 MaxAutoRetriesNextServer 参数设置为2, 所以会尝试更换两次实例进行重试.

  • 相关阅读:
    使用RF(robotframework)要安装哪些库
    MYSQL题目练习专用
    MySQL字段拼接
    WPF样式
    WPF数据模板
    WPF控件模板
    WPF布局
    面向对象程序设计原则
    设计模式之策略模式
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/xiaoshouxing/p/9573887.html
Copyright © 2011-2022 走看看