• springcloud-声明式调用服务Feign


    springcloud项目例子:链接:https://pan.baidu.com/s/1O1PKrdvrq5c8sQUb7dQ5Pg 密码:ynir

    作用:

      基于Netflix Feign整合了Ribbon和Hystrix,Spring Cloud Feign对RestTemplate进行了进一步的封装,简化了我们的封装操作

    一:创建Feign应用

      1.pom:依赖主要是spring-cloud-starter-eureka和spring-cloud-starter-feign

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <spring-cloud.version>Dalston.SR3</spring-cloud.version>
    </properties>
    <dependencies>
        <!-- 其他依赖 -->
        <!-- 自己添加的依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    View Code

      2.入口函数:@EnableFeignClients注解表示开启Spring Cloud Feign的支持功能

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

      3.声明 服务

        1)创建service层,使用注解@FeignClient,之后Controller直接调用他就能访问生产者提供的服务

    @FeignClient("hello-service")
    public interface HelloService {
        @RequestMapping("/hello")
        String hello();
    }

    //生产者提供的服务代码
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
      public String hello() {
       return "hello";
      }

        2)Controller层调用服务

    @RestController
    public class FeignConsumerController {
        @Autowired
        HelloService helloService;
    
        @RequestMapping("/hello")
        public String hello() {
            return helloService.hello();
        }
    }
    View Code

      4.属性配置

    spring.application.name=feign-consumer
    server.port=2005
    eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

      5.测试

        运行服务,生产者,Feign消费者调用消费者接口,发现生产者的服务能给调用成功,Feign服务配置成功!

      

     二:Feign的配置

    spring.application.name=feign-consumer
    server.port=2005
    eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
    
    ###ribbon测试#######
    # 设置连接超时时间
    ribbon.ConnectTimeout=600
    # 设置读取超时时间
    ribbon.ReadTimeout=6000
    # 对所有操作请求都进行重试
    ribbon.OkToRetryOnAllOperations=true
    # 切换实例的重试次数
    ribbon.MaxAutoRetriesNextServer=2
    # 对当前实例的重试次数
    ribbon.MaxAutoRetries=1
    
    # 设置针对hello-service服务的连接超时时间
    hello-service.ribbon.ConnectTimeout=600
    # 设置针对hello-service服务的读取超时时间
    hello-service.ribbon.ReadTimeout=6000
    # 设置针对hello-service服务所有操作请求都进行重试
    hello-service.ribbon.OkToRetryOnAllOperations=true
    # 设置针对hello-service服务切换实例的重试次数
    hello-service.ribbon.MaxAutoRetriesNextServer=2
    # 设置针对hello-service服务的当前实例的重试次数
    hello-service.ribbon.MaxAutoRetries=1
    
    ####Hystrix配置#######
    # 设置熔断超时时间
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
    # 关闭Hystrix功能(不要和上面的配置一起使用)
    feign.hystrix.enabled=false
    # 关闭熔断功能
    hystrix.command.default.execution.timeout.enabled=false
    
    # 设置熔断超时时间
    hystrix.command.hello.execution.isolation.thread.timeoutInMilliseconds=10000
    # 关闭熔断功能
    hystrix.command.hello.execution.timeout.enabled=false
    
    ####Feign其他配置#######
    ####Spring Cloud Feign支持对请求和响应进行GZIP压缩,以提高通信效率
    # 配置请求GZIP压缩
    feign.compression.request.enabled=true
    # 配置响应GZIP压缩
    feign.compression.response.enabled=true
    # 配置压缩支持的MIME TYPE
    feign.compression.request.mime-types=text/xml,application/xml,application/json
    # 配置压缩数据大小的下限
    feign.compression.request.min-request-size=2048
    
    # 开启日志 格式为logging.level.+Feign客户端路径,Feign为每一个FeignClient都提供了一个feign.Logger实例
    logging.level.org.sang.HelloService=debug
  • 相关阅读:
    vagrant+virtualbox 构建mac虚拟机环境
    python dns模块
    Ansible模块开发-自定义模块
    nginx rewrite 踩坑
    死磕nginx系列--nginx 目录
    死磕salt系列-salt文章目录汇总
    ant jmeter jenkins 实现自动化测试
    prometheus-入门尝试
    redis-Sentinel配置
    devops工具-Ansible进阶playbook&roles
  • 原文地址:https://www.cnblogs.com/xiaoping1993/p/9441742.html
Copyright © 2020-2023  润新知