博客
关于我
》》》》》spring cloud Feign接口组件中使用FallBackFactory整合hystrix《《《《《
阅读量:386 次
发布时间:2019-03-05

本文共 1934 字,大约阅读时间需要 6 分钟。

Fegin接口与Hystrix的集成优化方案——基于FallbackFactory的实现

在上一节中,我们实现了Fegin接口组件与Hystrix的整合。接下来,我们将采用FallbackFactory的方式实现相同功能,探索其优势并优化代码结构。

一、修改Fegin接口

为了实现Fegin接口的优化,我们需要对接口进行适当的修改。具体来说,我们引入了FallbackFactory的组件,使其能够更灵活地处理接口的降级和故障转移。这种方法与传统的Hystrix实现相比,具有更高的可定制性和扩展性。

二、FallbackFactory实现细节

为了实现FallbackFactory的功能,我们编写了一个新的服务类HystrixFallBackFactory。该类继承自FallbackFactory接口,并通过内部定义的回调方法实现接口的降级处理。

package com.ljf.weifuwu.springcloud.hystrix.service;import com.ljf.weifuwu.springcloud.hystrix.model.HystrixUser;import feign.hystrix.FallbackFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;@Componentpublic class HystrixFallBackFactory implements FallbackFactory {    private static final Logger LOGGER = LoggerFactory.getLogger(HystrixFallBackFactory.class);    @Override    public HystrixUserFegin create(final Throwable cause) {        return new HystrixUserFegin() {            @Override            public HystrixUser getSingleUser(Long id) {                LOGGER.info("fallback; reason was: ", cause);                System.out.println("超时发生错误的.....使用fegin-hystrix-facotry进行处理");                HystrixUser u = new HystrixUser();                u.setId(00l);                u.setName("fegin-hystrix-factory-超时错误");                return u;            }        };    }}

三、服务启动

为了验证FallbackFactory的有效性,我们需要启动对应的服务。以下是相关服务的启动说明:

  • ms-eureka-center (8761):作为Eureka中心服务,负责服务注册与发现。
  • ms-eureka-provider (9701):提供具体的服务接口。
  • ms-hystrix-consumer (8005):消费提供的服务,验证FallbackFactory的降级能力。
  • 四、功能测试

    在服务正常启动后,我们对接口进行访问测试,确保FallbackFactory能够在接口超时或故障时有效切换到降级服务。

  • 正常访问测试

    • 访问接口时,系统能够正常返回预期数据,确认FallbackFactory未被触发。
  • 故障处理测试

    • 关闭ms-eureka-provider服务(9701),然后重新访问接口,确保系统能够自动切换到其他可用的服务。
  • 五、实际效果

    通过以上测试,我们可以清晰地看到FallbackFactory的优势。即使在提供者服务不可用的情况下,消费者仍然能够获得一个默认的回复,从而保证了系统的稳定性和可用性。这种降级机制能够有效地应对服务的不可用性问题,提升系统的整体容错能力。

    通过本文的实现,我们成功地将Fegin接口与Hystrix进行了优化,采用FallbackFactory的方式实现了接口的降级和故障转移。这种实现方式不仅提升了系统的弹性,也为后续的服务优化和扩展奠定了良好的基础。

    转载地址:http://houzz.baihongyu.com/

    你可能感兴趣的文章
    使用第三方sdk,微信wechat扫码登录
    查看>>
    ValueError: check_hostname requires server_hostname
    查看>>
    基于LabVIEW的入门指南
    查看>>
    PCB布局系列汇总
    查看>>
    “/”应用程序中的服务器错误。
    查看>>
    MUI之ajax获取后台接口数据
    查看>>
    使用sqlserver 查询不连续的数据
    查看>>
    用div+css+html+js 实现图片放大
    查看>>
    (原创)在Linux上安装运行Python3(CentOS7为例)
    查看>>
    weblogic之cve-2015-4852
    查看>>
    Java注释
    查看>>
    水调歌头·1024
    查看>>
    C++ 函数重载
    查看>>
    Nginx简介
    查看>>
    Nginx的Gzip功能
    查看>>
    Azure Storage 系列(四)在.Net 上使用Table Storage
    查看>>
    a instanceof A:判断对象a是否是类A的实例。如果是,返回true;如果不是,返回false
    查看>>
    abstract关键字的使用
    查看>>
    .NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
    查看>>
    解决Spirng注入时名称下的红色波浪线
    查看>>