java.net.UnknownHostException异常

一、在eureka注册中心里使用feign远程调用时出现java.net.UnknownHostException异常

java.net.UnknownHostException(主机未知异常)(PS:因为使用nacos调用服务时候不会出现这种问题)

@FeignClient(name = "springcloud-eureka-provider",configuration = FeignLoggerConfig.class,fallback = ProviderFeignClientFallBack.class)
	public interface ProviderFeignClient {
	    @GetMapping("/provider/getResult/{id}")
	    Result getResult(@PathVariable int id);
	}

运行时出现以下异常
java.net.UnknownHostException: springcloud-eureka-provider	
(异常详细信息如后图)

//如果注册中心中设置的hostname域名不可用,可以通过以下任一方法解决:
		a)删除hostname属性,设置偏好ip:prefer-ip-address: true
		b)在此接口上@FeignClient注解中设置url = "http://127.0.0.1:8000"
//url设置调用服务的全路径,一般用于本地测试(eureka与nacos不同,只设置name会报:java.net.UnknownHostException: springcloud-eureka-provider)
@FeignClient(url = "http://127.0.0.1:8001",name = "springcloud-eureka-provider",configuration = FeignLoggerConfig.class,fallback = ProviderFeignClientFallBack.class)

**解决方式:在/@FeignClient注解中增添url参数解决,或者删除服务提供者application.yml文件注册中心设置的hostname属性,修改IP偏好设置 prefer-ip-address: true

二、使用静态路由转换成动态路由时出现java.net.UnknownHostException异常

spring:
  application:
	 name: springcloud-gateway-server
  cloud:
    gateway:
      routes:
        #id 唯一标识
        - id: gateway-provider
        
          #uri 转发路径  #静态路由
       	  uri: http://127.0.0.1:8001
       	  
    	  #uri 转发路径  #动态路由
          uri: lb://SPRINGCLOUD-EUREKA-PROVIDER
          
          #predicates 用来请求网关路径的匹配规则
          predicates:
            - Path=/provider/**
                  
        - id: gateway-consumer
          uri: http://127.0.0.1:8002
          predicates:
            - Path=/consumer/**

解决方式:
删除服务提供者application.yml文件注册中心设置的hostname属性,修改IP偏好设置 prefer-ip-address: true ,或者在C:\Windows\System32\drivers\etc\hosts文件中添加

127.0.0.1 springcloud-eureka-provider 

在Eureka中使用@FeignClient未使用url属性时发生:
在这里插入图片描述
在配置文件中使用lb://xxx 动态路由时发生:
在这里插入图片描述
修改本机hosts文件:
在这里插入图片描述

总结

在单机开发阶段,
如果出现UnknownHostException异常:
	1、如果注册中心是eureka,检查FeignClient的url属性
	2、如果不存在上述问题,检查是否由动态路由设置时造成
	3、检查eureka配置文件中的hostname属性(ip地址或域名)
	以上两种问题均可通过在本地hosts文件中修改ip 对应的域名解决,在开发过程中不建议使用域名,注册中心中hostname使用本机ip即可,(在正式测试、生产环境下修改成服务器对应的域名即可);

@FeignClient中name和url的作用和区别:
如果同时指定name和url属性: 则以url属性为准,name属性指定的值便当做客户端的名称

相关的资料:
原博:https://blog.csdn.net/qq_40891009/article/details/103390079

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值