解决Feign只配置name或者value,报java.net.UnknownHostException
2026/6/8 2:39:27 网站建设 项目流程

解决Feign只配置name或者value,报java.net.UnknownHostException


问题背景:

  • 服务A与服务B在同一个阿里云mse(nacos)下注册,部署在k8s容器上
  • 服务A通过Feign把服务B的名称配置到name或者value
  • nacos后台可以看到两个服务都已经注册
    但是一直报java.net.UnknownHostException

问题排查:

  • 先检查pom依赖
    在Spring Cloud 2020.0.0 (Ilford) 版本之后,Netflix Ribbon被移除了,默认使用Spring Cloud LoadBalancer。
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
  • 检查配置注解
    @EnableFeignClients: feign客户端是否开启
    @EnableDiscoveryClient: 服务注册与服务发现是否开启

  • 检查nacos配置
    检查两个服务是否在同一个nacos的同一个namespace的同一个group下;
    检查最终启动程序的nacos配置是否正确: (文件/自动发布脚本/配置中心等);
    最终在nacos后台可以看到两个服务都在服务列表

  • 确认负载均衡是否配置
    Feign 没有负载均衡器,直接使用 HTTP 客户端调用,但服务名不是有效的域名。导致UnknownHostException


问题定位

  • 最终定位是负载均衡未配置
  • 配置方式如下面两种

1.通过配置文件

spring:cloud:loadbalancer:enabled:true

2.通过自定义配置类(我选择的此种方式)

importfeign.Client;importfeign.Logger;importfeign.slf4j.Slf4jLogger;importorg.springframework.cloud.client.loadbalancer.LoadBalancerClient;importorg.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;importorg.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassFeignConfig{@BeanpublicClientfeignClient(LoadBalancerClientblockingLoadBalancerClient,LoadBalancerClientFactoryloadBalancerClientFactory){returnnewFeignBlockingLoadBalancerClient(newClient.Default(null,null),blockingLoadBalancerClient,loadBalancerClientFactory);}@BeanLogger.LevelfeignLoggerLevel(){returnLogger.Level.FULL;}@BeanpublicLoggerlogger(){returnnewSlf4jLogger();}}

最终问题得以解决

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询