微服务间通信失败有很多原因。除了网络不通这种原因外,容易忽略的地方有:
1.添加负载均衡依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> <version>4.1.0</version> </dependency>
2.调用端加这个注解:
@FeignClient(name = "food-service", fallback = FoodFeignClientCallBack.class) public interface FoodFeignClient {
确保name的值是正确的(被调用端在配置文件里的名字),避免service写成server这种错误。
3.如果确定没有低级失误,那接下来看看代码日志:
确保微服务向eureka服务端注册成功:
微服务端日志最后应该有:
DiscoveryClient_XXXX-SERVICE-10002/192.8.XX.XX:10002 - registration status: 204
eureka服务端应该有该服务的注册信息:
Registered instance XXXX-SERVICE-10002/192.168.XX.XX:10002 with status UP (replication=false)
如果没注册成功,就要找找是什么原因了,比如看看有没有引入netflix依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix-dependencies</artifactId> <version>4.0.4</version> <type>pom</type> <scope>import</scope> </dependency>