项目场景:
利用openfegin客户端做服务降级,关闭服务端,服务降级却不生效。
导入依赖
spring-cloud-starter-feign 2019 年就停更了,现在用 spring-cloud-starter-openfeign
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
配置微服务连接
fallbackFactory是feign的返回提供服务类
//
@Component
//feign 配置微服务连接,fallbackFactory提供降级服务
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
//@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT")
public interface DeptClientService {
@RequestMapping("/dept/add")
boolean addDept(Dept dept);
@RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)
Dept queryById(@PathVariable("id") Long id);
@RequestMapping("/dept/list")
List<Dept> queryAll();
}
提供降级服务
@Component
// 降级
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
@Override
public DeptClientService create(Throwable throwable) {
return new DeptClientService() {
@Override
public boolean addDept(Dept dept) {
return false;
}
@Override
public Dept queryById(Long id) {
return new Dept()
.setDeptId(id)
.setDName("id=>"
+id+
"没有对应的信息,客户端做了降级的服务,这个服务现在已经关闭")
.setDb_source("没有这个服务");
}
@Override
public List<Dept> queryAll() {
return null;
}
};
}
}
启动类配置
@SpringBootApplication
// 开启eureka客户端
@EnableEurekaClient
// 开启feign客户端
@EnableFeignClients
public class DeptConsumer_feign {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_feign.class,args);
}
}
配置yml
# 开启熔断器
feign:
circuitbreaker:
enabled: true
问题描述
关闭客户端提示
前端爆500错误
后端提示:
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_291]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_291]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_291]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_291]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_291]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_291]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_291]
at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_291]
at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_291]
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[na:1.8.0_291]
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[na:1.8.0_291]
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:698) ~[na:1.8.0_291]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1593) ~[na:1.8.0_291]
Message(READ_DATA, bytes, -1, buffer).sendToTarget();
}
..........
原因分析:
最新版本已经不包含hystrix包了

解决方案:
什么都不用做,导入hystrix依赖即可
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
本文探讨了在使用Spring Cloud OpenFeign进行服务降级时遇到的问题,即服务端关闭但降级未生效。通过分析发现,新版不再包含Hystrix包,解决方法是引入spring-cloud-starter-netflix-hystrix依赖。
1149

被折叠的 条评论
为什么被折叠?



