zoukankan      html  css  js  c++  java
  • springcloud系列八 整合Hystrix

    feign本身是支持Hystrix的,所以不需要引入其他依赖:

    我们可以看看feign这个项目的依赖,就是引入这个依赖的pom.xml

    要想看这个很简单,点击那个依赖进去就可以了

    点进去就可以看到

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign</artifactId>
            <version>2.1.0.RELEASE</version>
            <relativePath>..</relativePath>
        </parent>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <name>Spring Cloud Starter OpenFeign</name>
        <description>Spring Cloud Starter OpenFeign</description>
        <url>https://projects.spring.io/spring-cloud</url>
        <organization>
            <name>Pivotal Software, Inc.</name>
            <url>https://www.spring.io</url>
        </organization>
        <properties>
            <main.basedir>${basedir}/../..</main.basedir>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-openfeign-core</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-commons</artifactId>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-core</artifactId>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-slf4j</artifactId>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-hystrix</artifactId>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-java8</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-archaius</artifactId>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </project>

    是本身就支持的,所以直接使用就可以了:

    使用很简单:

    在yml文件中开启:

    feign:
      hystrix:
        enabled: true

    看之前写的调用接口:

    package com.cxy.service;
    
    import com.cxy.dataObject.PersonDo;
    import com.cxy.service.impl.PersonServiceImpl;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @FeignClient(value = "cxy-person-service",fallback=PersonServiceImpl.class)
    public interface IPersonService {
        @RequestMapping("/person/{id}")
        PersonDo getPersonDoById(@PathVariable("id")Integer id);
    }

    那个如果服务出现问题了就进入实现类的方法中

     然后填写一个实体类就可以了:

    package com.cxy.service.impl;
    
    import com.cxy.dataObject.PersonDo;
    import com.cxy.service.IPersonService;
    import org.springframework.stereotype.Component;
    
    /***
     * @ClassName: PersonServiceImpl
     * @Description:
     * @Auther: 陈绪友
     * @Date: 2019/1/2821:09
     * @version : V1.0
     */
    @Component
    public class PersonServiceImpl implements IPersonService {
        @Override
        public PersonDo getPersonDoById(Integer id) {
            return new PersonDo(1,"1",1,"1");
        }
    }

     不启动person服务看结果:

    是在实现类中的数据,代表生效了

  • 相关阅读:
    阿里云乌班图16配置-PHP环境(包括mysql及apache安装)
    mysql主从复制跳过错误
    64位系统下powerdesigner15连接oracle odbc
    解决“指定的服务已经标记为删除”问题
    mysql系列-安装及服务启动
    数据缓存管理
    redis-在乌班图下设置自动启动
    redis-配置文件
    redis安装
    linux-用户建立及权限分配
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10333265.html
Copyright © 2011-2022 走看看