Java熔断器实现,SpringCloud熔断器实例介绍

Hystrix概念

Hystrix 是一个供分布式系统使用,提供延迟和容错功能,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。

比如系统中有很多服务,当某些服务不稳定的时候,使用这些服务的用户线程将会阻塞,如果没有隔离机制,系统随时就有可能会挂掉,从而带来很大的风险。SpringCloud使用Hystrix组件提供断路器、资源隔离与自我修复功能。下图表示服务B触发了断路器,阻止了级联失败

601609b76b16a8ea4fdcd75635256dbb.png

feign结合Hystrix使用

在service的pom中添加依赖

org.springframework.cloud

spring-cloud-starter-netflix-ribbon

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.cloud

spring-cloud-starter-openfeign

在配置文件中添加hystrix配置

#开启熔断机制

feign.hystrix.enabled=true

# 设置hystrix超时时间,默认1000ms

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000

在service-edu的client包里面创建熔断器的实现类

@Component

public class VodFileDegradeFeignClient implements VodClient {

@Override

public R removeVideo(String videoId) {

return R.error().message("time out");

}

@Override

public R removeVideoList(List videoIdList) {

return R.error().message("time out");

}

}

修改VodClient接口的注解

@FeignClient(name = "service-vod", fallback = VodFileDegradeFeignClient.class)

@Component

public interface VodClient {

@DeleteMapping(value = "/eduvod/vod/{videoId}")

public R removeVideo(@PathVariable("videoId") String videoId);

@DeleteMapping(value = "/eduvod/vod/delete-batch")

public R removeVideoList(@RequestParam("videoIdList") List videoIdList);

}

本文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/107891277

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值