时间:2022-06-30 09:29:02 | 栏目:JAVA代码 | 点击:次
这里配置spring-cloud 版本为 M8的
<properties> <java.version>1.8</java.version> <spring-cloud.version>Finchley.M8</spring-cloud.version> </properties>
引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.0.0.RC1</version> </dependency>
注意:spring-cloud 版本一定要选好,不然可能会找不到FeignClient,
再网上看到这样一句话:
Spring Cloud对Feign的支持由org.springframework.cloud:spring-cloud-netflix-core
移到org.springframework.cloud:spring-cloud-openfeign-core下,
Finchley.M8版本下的spring-cloud-starter-openfeign:2.0.0.M2的pom依赖文件中导入的是
spring-cloud-netflix-core而非spring-cloud-openfeign-core,
需要我们在pom文件中添加对应依赖管理使spring-cloud-starter-openfeign版本
更新到2.0.0.RC1
那么接下来我们进行代码整理
编写接口
@FeignClient(name="eureka-client-1") public interface EurekaClient { @GetMapping("/info") String getInfo(); }
调用
@GetMapping("getMessage") public String getMessage(){ String res = eurekaClient.getInfo(); return res; }
Application Status SERVICE-HOT 192.168.22.180:8308 SERVICE-REDIS 127.0.0.1:4046 SERVICE-ZUUL 127.0.0.1:4041
feign.RetryableException: connect timed out executing GET http://SERVICE-REDIS/redis/NaviKey-24149-1
at feign.FeignException.errorExecuting(FeignException.java:84)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113)
排查后发现:是因为注册服务ip问题,导致本地服务无法通过服务名字找到相应的服务。
Application Status SERVICE-HOT 192.168.22.180:8308 SERVICE-REDIS 192.168.22.180:4046 SERVICE-ZUUL 192.168.22.180:4041
不修改服务注册配置,还有一种办法:使用fegin时,通过url指定访问服务的ip
@FeignClient(value = "SERVICE-REDIS", url="http://192.168.22.180:4041/service-redis" , fallback = RedisSvcFallback.class) public interface RedisSvc {