此问题耗费我两三个小时解决,淦!
从哔哩哔哩上面自学java,老师是狂神,springcloud是完全跟着狂神老师学的,有些东西确实被淘汰了,学了很多了才知道此技术被淘汰了,没办法,我觉得先学完吧,毕竟里面的意思都差不多,主要是代码不同。
学到springCloud服务降级,狂神老师教的springCloud、hystrix、eureka......等,都是1.x版本的,所以在老师的教程中,负载均衡都需要另外加入ribbon依赖。
但现在都出了3.x版本了,1.x版本的肯定过时了。
当然,我学习的时候用的是2.x版本的,2.x和3.x都不需要另外加ribbon依赖,因为hystrix依赖里面自带,所以导入了hystrix之后,其实不用再去另外导入ribbon依赖,没鸟用。
不废话,进入标题报错正题:
当我们导入(spring-cloud-starter-netflix-hystrix)这个依赖的时候,可以可以看一下项目库中依赖:
我确实就只导入了 hystrix 这一个依赖,但这个依赖会自动将loadbalancer和ribbon都导入进去,hystrix 2.x版本是包含这两个的。
我运行了三个模块服务,一个eureka注册中心,一个provider提供者,一个是consumer消费者:
启动之后,当我们使用(conmuser消费者80)去获取数据库中数据时,我都还没体验到客户端服务降级呢,就给我一个500报错,淦!
上面是浏览器端,下面是idea控制台报错:
视频中弹幕并没有此问题解决方案,我也查询了百度,依然没有解决办法。
我突发奇想,想到去项目库中将ribbon依赖给删掉,但是我不清楚为什么删掉ribbon依赖之后,客户端服务降级就可以正常访问。
将这个两个ribbon依赖删掉之后,重启所有服务,你就可以正常体验客户端服务降级。
可以看到,我就能正常查询数据了,浏览器不会报500错误,idea也不会报那个啥啥啥错误 。
然后客户服务降级嘛,需要将(provider提供者8001)服务关掉,并给用户信息反馈,保留(eureka注册中心7001) 和 (consumer消费者80),得出结果:
成功了。 客户端服务降级体验完成,继续往后学。
唉,越学到后面,一个bug报错问题能卡好久,淦!