Eureka已注册服务无法通过application.name访问,RestTemplate/OpenFeign调用失败
问题排查&解决步骤
- 1. 修正YAML语法错误
你的服务配置中port:9005、port:9004不符合YAML语法规范,冒号后必须添加空格,修改为:server: port: 9005 # IMAGES-SERVICE按此修改,FEATURES-SERVICE改为port: 9004 - 2. 修正Eureka注册地址配置
Eureka客户端的服务地址配置键为驼峰命名defaultZone,你当前使用的default-zone会导致注册异常,服务无法正确拉取注册表,修改配置:eureka: client: service-url: defaultZone: http://localhost:8761/eureka # 将default-zone改为defaultZone - 3. RestTemplate添加负载均衡注解
若使用RestTemplate发起服务调用,必须给注入的RestTemplate实例添加@LoadBalanced注解,才能启用服务名到实际地址的自动解析能力:@Configuration public class RestTemplateConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } } - 4. OpenFeign配置检查
若使用OpenFeign发起调用,需确认两点:- 启动类上添加
@EnableFeignClients注解,扫描Feign接口 - Feign接口的
@FeignClient注解的value属性值与被调用方的spring.application.name完全一致,本场景下为images-service
- 启动类上添加
所有配置修改完成后重启三个服务,先确认Eureka控制台中两个业务服务状态均为UP,再重新测试服务调用即可。

内容的提问来源于stack exchange,提问作者Juan Rojas
相关产品推荐
相关产品推荐

