Spring-cloud-gateway: How to consume service with lb:// protocol using WebClient webflux in SCG filter factory?

Created on 19 Dec 2019  Â·  3Comments  Â·  Source: spring-cloud/spring-cloud-gateway

WebClient with lb://hello-world-service throwing as below.

java.net.UnknownHostException: No such host is known (hello-world-service)
        at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
        |_ checkpoint ⇢ Request to GET lb://hello-world-service/hello [DefaultWebClient]
        |_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]    
        |_ checkpoint ⇢ org.springframework.security.web.server.ui.LogoutPageGeneratingWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.ui.LoginPageGeneratingWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.oauth2.client.web.server.authentication.OAuth2LoginAuthenticationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.oauth2.client.web.server.OAuth2AuthorizationRequestRedirectWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP GET "/hello-world-service/api/hello" [ExceptionHandlingWebHandler]
Stack trace:
                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.42.Final.jar:4.1.42.Final]
                at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:143) ~[netty-common-4.1.42.Final.jar:4.1.42.Final]
                at java.base/java.security.AccessController.doPrivileged(AccessController.java:703) ~[na:na]
                at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:143) ~[netty-common-4.1.42.Final.jar:4.1.42.Final]      
                at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:43) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]
                at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:63) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]  
                at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:55) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]  
                at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:57) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]
                at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:32) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]
                at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:108) ~[netty-resolver-4.1.42.Final.jar:4.1.42.Final]
                at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:202) ~[netty-transport-4.1.42.Final.jar:4.1.42.Final]    
                at io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:164) ~[netty-transport-4.1.42.Final.jar:4.1.42.Final]     
                at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:118) ~[netty-transport-4.1.42.Final.jar:4.1.42.Final]

Thanks!

question

All 3 comments

Please learn how to properly format code and logs.

From the documentation

@Configuration
public class MyConfiguration {

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

Then inject @LoadBalanced WebClient.Builder.

Thank you @spencergibb!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

aresa7796 picture aresa7796  Â·  6Comments

zjengjie picture zjengjie  Â·  6Comments

xfworld picture xfworld  Â·  3Comments

esacaceres picture esacaceres  Â·  7Comments

xiaozhiliaoo picture xiaozhiliaoo  Â·  4Comments