当前位置: 首页 > news >正文

Feign:服务挂了也不会走fallback

Feign 本质上是一个 HTTP 客户端,用于简化微服务之间的 HTTP 通信。它允许开发者通过定义接口和注解来声明式地编写 HTTP 客户端,而无需手动编写 HTTP 请求和响应处理的代码。


今天在模拟微服务A feign调用微服务B的时候,把微服务B关了,可是调用的时候不会走fallback降级方法。直接报错:

2024-09-28 18:45:00.247 ERROR 13248 --- [illProductJob-2] c.d.d.j.e.h.i.DefaultJobExceptionHandler : Job 'InitSeckillProductJob' exception occur in job processingjava.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: seckill-serviceat org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:90) ~[spring-cloud-openfeign-core-2.2.5.RELEASE.jar:2.2.5.RELEASE]at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:119) ~[feign-core-10.10.1.jar:na]at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89) ~[feign-core-10.10.1.jar:na]at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100) ~[feign-core-10.10.1.jar:na]at com.sun.proxy.$Proxy76.queryByTimeForJob(Unknown Source) ~[na:na]at cn.dscode.job.InitSeckillProductJob.execute(InitSeckillProductJob.java:38) ~[classes/:na]at com.dangdang.ddframe.job.executor.type.SimpleJobExecutor.process(SimpleJobExecutor.java:41) ~[elastic-job-common-core-2.1.5.jar:na]at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.process(AbstractElasticJobExecutor.java:206) [elastic-job-common-core-2.1.5.jar:na]at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.access$000(AbstractElasticJobExecutor.java:47) [elastic-job-common-core-2.1.5.jar:na]at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor$1.run(AbstractElasticJobExecutor.java:185) [elastic-job-common-core-2.1.5.jar:na]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_422]at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_422]at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_422]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_422]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_422]at java.lang.Thread.run(Thread.java:750) [na:1.8.0_422]
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: seckill-serviceat com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.3.8.jar:1.3.8]at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276) ~[rxjava-1.3.8.jar:1.3.8]at rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.8.jar:1.3.8]at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.8.jar:1.3.8]at rx.Observable.subscribe(Observable.java:10423) ~[rxjava-1.3.8.jar:1.3.8]at rx.Observable.subscribe(Observable.java:10390) ~[rxjava-1.3.8.jar:1.3.8]at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443) ~[rxjava-1.3.8.jar:1.3.8]at rx.observables.BlockingObservable.single(BlockingObservable.java:340) ~[rxjava-1.3.8.jar:1.3.8]at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:83) ~[spring-cloud-openfeign-core-2.2.5.RELEASE.jar:2.2.5.RELEASE]... 15 common frames omitted

  1. 配置文件已经开启了Feign与Sentinel的集成,启用熔断降级
    在这里插入图片描述

  2. 服务A使用Feign去调用另一个服务B
    在这里插入图片描述
    降级类在这里插入图片描述

  3. 服务B
    在这里插入图片描述
    后面发现是没加sentinel依赖

<!-- sentinel组件 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
http://www.lryc.cn/news/448932.html

相关文章:

  • 网络编程操作—函数
  • 博客摘录「 GD32的flash读、擦除、写操作」2024年9月2日
  • 【性能优化】低配starRocks常驻内存优化
  • 科研绘图系列:R语言树结构聚类热图(cluster heatmap)
  • 微信小程序操作蓝牙
  • Python爱心射线(完整代码)
  • 努比亚 Z17 NX563J Root 教程三方REC刷写工具教程
  • python 02 List
  • 【秋招笔试】09.28科大讯飞秋招(已改编)-研发岗
  • [SAP ABAP] 锁对象
  • Docker快速部署RabbitMq教程
  • 解决银河麒麟V10中/data目录执行权限问题
  • 画两个数的平方和的曲线
  • 问:进程/线程上下文切换场景及相关概念?
  • 神经网络(一):神经网络入门
  • 卸载apt-get 安装的PostgreSQL版本
  • 低代码用户中心:构建高效便捷的用户管理平台
  • 3款免费的GPT类工具
  • Mixture-of-Experts (MoE): 条件计算的诞生与崛起【上篇】
  • 【算法】分治:归并排序之LCR 170.交易逆序对的总数(hard)
  • 2024.9.28 作业+思维导图
  • 树莓派外挂Camera(基操)(TODO)
  • 讯飞星火编排创建智能体学习(二)决策节点
  • YOLOv5改进:Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU
  • 力扣 简单 112.路径总和
  • OpenMV与STM32通信全面指南
  • Python库matplotlib之二
  • DAY17||654.最大二叉树 |617.合并二叉树 |700.二叉搜索树中的搜索 |
  • 读构建可扩展分布式系统:方法与实践16读后总结与感想兼导读
  • Anaconda 安装