当前位置: 首页 > 知识库问答 >
问题:

Spring WebClient和Eureka服务器

郭阳曜
2023-03-14

spring webclient无法从eureka服务器的服务实例名称中检索实际主机,出现以下异常:

java.net.UnknownHostException: USER-DATA-SERVICE
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_161]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
    |_ checkpoint ⇢ Request to GET http://USER-DATA-SERVICE/users/01 [DefaultWebClient]

Spring启动版本:2.2.3。BUILD-SNAPSHOT

共有2个答案

胡国兴
2023-03-14

如果@Bhavesh的答案仍然不起作用,那么请确保将AddressResolver添加到httpClient。让我们看看如何:

首先,不要忘记在属性中添加IP地址的首选项:

eureka:
  instance:
    prefer-ip-address: true

使用ReactorHttpClient


import io.netty.resolver.DefaultAddressResolverGroup;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;


@Configuration
public class WebClientConfig {

    @Bean
    public HttpClient httpClientReactor() {
        return HttpClient.create()
                .resolver(DefaultAddressResolverGroup.INSTANCE);
    }


    @Bean
    @LoadBalanced
    public WebClient.Builder loadBalancedWebClientBuilder(HttpClient httpClient) {

        return WebClient.builder().clientConnector(new ReactorClientHttpConnector(httpClient));
    }

}
梁英喆
2023-03-14

我也面临同样的问题,但我发现web客户端实例创建方法中缺少了@Bean标记。如果正在旋转多个实例,也可以使用@LoadBalanced注释

在应用程序类中添加以下代码。

@Bean
@LoadBalanced
public WebClient.Builder getWebClient(){
    return WebClient.builder();
}

这应该可以解决错误,干杯!

 类似资料:
  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot

  • pom.xml 主应用程序类 Application.Properties eureka客户端设置 pom.xml Application.Properties 我在eureka-server仪表板(http://localhost:8761)中没有看到向Eureka server注册的micro-service-currency-exchange-service 为什么eureka客户端没有注册

  • 我一直在试图找到一个与eureka服务器集成的spring cloud gateway的运行示例,以及一些Hystrix示例,但到目前为止我还没有找到。有什么地方可以找到它吗?我真的很想看到spring cloud gateway投入使用,取代我目前的Zuul API服务。 谢谢!

  • 在本章中,您将详细了解如何将Spring Boot Micro服务应用程序注册到Eureka Server中。 在注册应用程序之前,请确保Eureka Server在端口8761上运行或首先构建Eureka Server并运行它。 有关构建Eureka服务器的更多信息,请参阅上一章。 首先,您需要在我们的构建配置文件中添加以下依赖项,以便向Eureka服务器注册微服务。 Maven用户可以将以下依

  • 我对docker,Spring框架的一切都很陌生…它们成功地在localhost环境中运行,现在我想把它们推送到docker中,但是总是给我错误,我在那里卡住了大约一周。有人能帮我弄清楚吗!!! 现在我有 eureka 服务器和云配置服务器服务,这是我的代码: 尤里卡服务器应用程序.yml 和 Dockerfile: 现在我有云配置服务器应用程序.yml:在这个文件中,我试图在github上备份它

  • 我正在尝试建立一个基于Spring功能的简单微服务架构。我有3个简单的微服务作为起点:1配置服务器(Spring cloud config)2发现服务器(eureka Server)3网关Zuul 我配置了这些服务,以便发现服务器存储所有的.properties文件,它将自己注册到发现服务器,以便所有其他服务检索.properties文件,而不是通过静态url而是通过eureka服务器访问发现。