解决 feign.hystrix.enabled=true 不生效的问题

13 篇文章 0 订阅

在 spring cloud 的 Edgware.SR3 版项目中配置 feign 的 hystrix, 发现不生效。

在 spring 的 sts 中可以看到如下错误提示

Unknown property 'feign.hystrix'。

下载相关源码,找到如下代码:

// 此代码位于 org.springframework.cloud.netflix.feign.FeignClientsConfiguration$HystrixFeignConfiguration
@Configuration
@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })
protected static class HystrixFeignConfiguration {
	@Bean
	@Scope("prototype")
	@ConditionalOnMissingBean
	@ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = false)
	public Feign.Builder feignHystrixBuilder() {
		return HystrixFeign.builder();
	}
}

可以看到,开启  HystrixFeign 的条件有2个:

@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })

@ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = false)

第二项似乎哪里除了问题导致 HystrixFeign 没有启用。

解决办法也很简单,在自己的项目中手动开启即可:

@Configuration
public class SybnHystrixFeignConfiguration {
    @Bean
    @Scope("prototype")
    public Feign.Builder feignHystrixBuilder() {
        return Feign.builder();
    }
}


### 回答1: feign.hystrix.enabled=true的意思是启用FeignHystrix支持。Hystrix是Netflix开源的一款容错框架,可以在分布式系统中提供服务的保护和控制。在Feign中启用Hystrix支持可以使得Feign客户端在调用服务时具备容错能力,当服务出现故障或者超时时,可以通过Hystrix的机制进行降级或者熔断,从而保证系统的稳定性和可靠性。 ### 回答2: feign.hystrix.enabled=true 是一个开关,用于开启 FeignHystrix 的支持。在微服务架构中,如果一个服务调用另一个服务,那么就需要进行远程调用。在这个过程中,有可能会出现网络延迟、超时、断开等问题,为了保证系统的稳定性和可靠性,就需要加入熔断器。 Hystrix 是 Netflix 开源的一个熔断器实现,它能够实现快速失败、降级、限流等功能,防止服务之间出现雪崩效应。在 Feign 中,开启 feign.hystrix.enabled=true 后,就可以使用注解来标识那些方法需要熔断和降级。 举个例子,我们可以在 Feign 客户端接口的方法上添加 @HystrixCommand 注解,来实现熔断和降级。当调用远程服务的过程中发生异常时,可以通过自定义的 fallback 方法来返回假数据或者友好的错误提示,避免因为远程服务出现问题而导致整个系统崩溃。 总之,开启 feign.hystrix.enabled=true 可以为微服务架构中的远程调用提供更加稳定可靠的保障,增强系统的容错能力,提高可用性。 ### 回答3: feign.hystrix.enabled=true是一个Feign Client的属性值,用于开启该Feign Client的断路器功能。 Feign Client是Spring Cloud中一个用于声明式HTTP客户端的组件,可以使得编写HTTP请求变得简单,并且易于维护。需要注意的是,Feign Client并不是一个真正的HTTP客户端,而是通过动态代理方式来生成接口实现类,使用该实现类进行HTTP请求。 而断路器是一种在分布式系统中常用的模式,它可以防止一个服务的故障引起整个系统的瘫痪。当某个服务故障或出现延迟时,断路器将会暂时改变服务的调用方式,直接返回一个预设的fallback结果,而不是让系统等待该服务的响应。 因此,将feign.hystrix.enabled属性设置为true,就可以开启该Feign Client的断路器功能,从而在调用该Feign Client时,当该服务出现故障或者超时等情况时,不会阻塞整个系统,而是直接返回fallback结果,避免了局部故障造成的全局瘫痪。 总之,通过开启Feign Client的断路器功能,可以增强系统的健壮性和可靠性,并且防止服务的故障或者延迟带来的系统瘫痪。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值