Java Spring Gateway和Eureka的名称解析失败
你好 目前,我正在开发一个非常简单的网关,它(目前)只需要重定向传入的HTTP POST和GET请求 设置:Java Spring Gateway和Eureka的名称解析失败,java,spring,spring-boot,netflix-eureka,gateway,Java,Spring,Spring Boot,Netflix Eureka,Gateway,你好 目前,我正在开发一个非常简单的网关,它(目前)只需要重定向传入的HTTP POST和GET请求 设置: Eureka服务器:我的Spring Boot微服务注册的位置 Spring网关:映射所有传入的HTTP POST和GET请求,并将它们路由到适当的微服务 Spring Boot微服务:按要求做一些事情:) 注意:我对这个网关的东西有点陌生,只是你知道:) 微服务在Eureka服务器上注册良好。它基于Web的GUI向我显示实例“MY-MICRO-SERVICE”已在Eureka服务器
- Eureka服务器:我的Spring Boot微服务注册的位置李>
- Spring网关:映射所有传入的HTTP POST和GET请求,并将它们路由到适当的微服务李>
- Spring Boot微服务:按要求做一些事情:)
问题: 当网关有一个包含微服务IP地址的路由时,所有这些都可以顺利运行。但我想要的是让网关从Eureka服务器解析服务ID。如果我这样做,它会给我一个
java.net.UnknownHostException:MY-MICRO-SERVICE:name resourcion中的临时故障
问题: 现在,为什么我不能在SpringGateway中使用Spring应用程序的名称“MY-MICRO-SERVICE”(即注册的SpringBoot微服务)(而这种结构在其他微服务中使用时效果良好)?Yaml配置文件不能处理这样的实例名称吗,仅仅是IP地址
详细信息 网关主要通过yaml配置文件进行配置。只有一个简单的Java类启动网关应用程序。路由都在yaml配置文件中设置 Spring网关应用程序类 网关Yaml配置文件(application.yml) 错误 问题已经解决 我将“http”改为“lb”协议,解决了我的问题。据我理解,“lb”代表负载平衡。我的本地机器上没有活动的loadbalancer,但无论如何:这是可行的
- POST
routes:
- id: my_route
uri: lb://MY-MICRO-SERVICE
predicates:
- Path=/test/**
问题已经解决
我将“http”改为“lb”协议,解决了我的问题。据我理解,“lb”代表负载平衡。我的本地机器上没有活动的loadbalancer,但无论如何:这是可行的
- POST
routes:
- id: my_route
uri: lb://MY-MICRO-SERVICE
predicates:
- Path=/test/**
另一个注意事项:我还添加了Bean-LoadBalanced公共WebClient.Builder方法(返回WebClient.Builder())。上面描述的主要方法不再使用LoadBalancer进行注释(因为它不是bean)。但仍然存在同样的问题。另一个注意事项:我还添加了一个Bean-LoadBalanced公共WebClient.Builder方法(返回WebClient.Builder())。上面描述的主要方法不再使用LoadBalancer进行注释(因为它不是bean)。但同样的问题依然存在。
java.net.UnknownHostException: MY-MICRO-SERVICE: Temporary failure in name resolution
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929) ~[na:na]
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515) ~[na:na]
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848) ~[na:na]
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298) ~[na:na]
at java.base/java.net.InetAddress.getByName(InetAddress.java:1248) ~[na:na]
at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:146) ~[netty-common-4.1.36.Final.jar:4.1.36.Final]
...
- POST
routes:
- id: my_route
uri: lb://MY-MICRO-SERVICE
predicates:
- Path=/test/**