• Spring Cloud 之 Feign集成Hystrix基本使用(十)


    上一篇讲了Ribbon集成Hystrix基本使用,本篇再说一下Feign是如何集成Hystrix,完成回退的。

    先把Eureka集群和服务提供者(x-demo-service)集群启动。

    x-demo-service依然不用改任何东西,下面开始对x-demo-service-feign进行改造。

    1、build.gradle配置文件加入Hystrix依赖

    1 dependencies {
    2     compile project(":x-demo-service-api")
    3 
    4     compile("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client")
    5     compile("org.springframework.cloud:spring-cloud-starter-openfeign")
    6     compile("org.springframework.cloud:spring-cloud-starter-netflix-hystrix")
    7 }

    2、新建回退类,该类必须集成我们之前写的FeignClientDemoService接口

     1 package com.x.demo.feign.fallback;
     2 
     3 import com.x.demo.feign.service.FeignClientDemoService;
     4 import org.springframework.stereotype.Component;
     5 
     6 /**
     7  * @author Leo
     8  */
     9 @Component
    10 public class FeignClientDemoServiceFallback implements FeignClientDemoService {
    11     @Override
    12     public String service() {
    13         return "我是Feign,服务端大概率挂了!";
    14     }
    15 }

    3、FeignClientDemoService接口修改

    修改FeignClient注解配置,将fallback指向我们新建的回退类FeignClientDemoServiceFallback
     1 package com.x.demo.feign.service;
     2 
     3 import com.x.demo.feign.fallback.FeignClientDemoServiceFallback;
     4 import org.springframework.cloud.openfeign.FeignClient;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.bind.annotation.RequestMethod;
     7 
     8 /**
     9  * @author Leo
    10  */
    11 @FeignClient(value = "x-demo-service", fallback = FeignClientDemoServiceFallback.class)
    12 public interface FeignClientDemoService {
    13 
    14     @RequestMapping(value = "demo/service", method = RequestMethod.GET)
    15     String service();
    16 }

    4、启动服务

    启动类不用改任何东西

     1 /**
     2  * @author Leo
     3  */
     4 @SpringBootApplication
     5 @EnableEurekaClient
     6 @EnableFeignClients
     7 public class FeignServerApplication {
     8 
     9     public static void main(String[] args) {
    10         SpringApplication.run(FeignServerApplication.class, args);
    11     }
    12 }

    5、测试

    浏览器输入:http://localhost:8092/feign/service,多次刷新接口,返回:

    x-demo-service hello.8081

    x-demo-service hello.8082

    x-demo-service hello.8083

    将服务提供者x-demo-service Kill之后,刷新http://localhost:8092/feign/service,返回:

    我们看到接口返回了一个Whitelabel Error Page页面,并没有返回我们在回退类中输出的“我是Feign,服务端大概率挂了!”,这肯定不是我们想要的结果

    原因是我们还需要改一下配置文件,需要开启hystrix功能,将feign.hystrix.enabled设置为true。

     1 spring:
     2   application:
     3     name: x-demo-service-feign
     4 
     5 server:
     6   port: 8092
     7 
     8 eureka:
     9   client:
    10     serviceUrl:
    11       defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
    12 
    13 feign:
    14   hystrix:
    15     enabled: true

    重启服务,刷新http://localhost:8092/feign/service,返回:

     至此,Feign基础hystrix完成。

  • 相关阅读:
    python之模块与包
    python之异常处理
    python之os与json&pickle模块
    python之random、time与sys模块
    python之re模块
    python之匿名函数、递归与二分法
    python之内置函数
    python之迭代器、生成器及列表推导式
    python之第一对象,函数名的应用,闭包
    python之命名空间与作用域
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14440241.html
Copyright © 2020-2023  润新知