写点什么

Spring Cloud 入门教程 - 熔断器 -Hystrix,字节跳动 Java 面试凉凉经

作者:MySQL神话
  • 2021 年 11 月 27 日
  • 本文字数:1583 字

    阅读完需:约 5 分钟

<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>


</dependency>


在启动类 EurekaClientRibbonApplication 上添加 @EnableHystrix 注解


@EnableHystrix


@EnableEurekaClient


@SpringBootApplication


@ComponentScan("com.springcloud.demo.eurekaclientribbon")


public class EurekaClientRibbonApplication {


public static void main(String[] args) {


SpringApplication.run(EurekaClientRibbonApplication.class, args);


}


}


修改 RibbonService 在 main()方法上添加 @HystrixCommand


@Service


public class RibbonService {


@Autowired


RestTemplate restTemplate;


@HystrixCommand(fallbackMethod = "errorFallbackMsg")


public int main(){


return restTemplate.getForObject("http://eureka-client/main",Integer.class);


}


public int errorFallbackMsg(){


return -2;


}


}


fallbackMethod 参数是在熔断器打开时,即远程服务调用失败时执行的方法名。


启动 eureka-client-ribbon ,关闭两个 eureka-client 实例,请求http://localhost:8795/main


返回-2,熔断器生效。


在 Feign 上使用熔断器




添加依赖


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>


</dependency>


在老版本中 由于 feign 中使用了 hytrix,因此不需要加入依赖,但是新版本中会报错找不到类


Caused by: java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect


添加配置


eign.hystrix.enabled=true


开启 Hytrix 功能。


修改 FeignService,添加参数 fallback。


@FeignClient(value = "eureka-client", configuration = FeignConfig.class,fallback = MainHystrixError.class)


public interface FeignService {


@GetMapping("main")


int main();


}


创建熔断器逻辑处理类 MainHystrixError,当请求远程服务失败时执行。

最后

为什么我不完全主张自学?①平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。


除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。


我个人建议线上比线下的性价比更高,线下培训价格基本上没 2W 是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:①价格:线上的价格基本上是线下的一半;②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;④课程:从课程内容来说,确实要比线下讲的更加深入。


应该学哪些技术才能达到企业的要求?(下图总结)



![](https://upload-images.jianshu.io/upload_images/22932333-d54e52d6fa5c3ab2?imageMogr2/auto-orien


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


t/strip%7CimageView2/2/w/1240)


本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
Spring Cloud入门教程-熔断器-Hystrix,字节跳动Java面试凉凉经