0

I am working on a sample poc and I am trying to integrate the spring cloud api gateway

In my pom.xml I have

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.tek</groupId> <artifactId>gatewayApplication</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Gateway Application</name> <description>Gateway Application for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>2021.0.3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 

and in my application.yml I have

 server: port: 9191 spring: application: name: API-GATEWAY cloud: gateway: routes: - id: DEPARTMENT-SERVICE uri: lb://DEPARTMENT-SERVICE predicates: - Path=/departments/** - id: USER-SERVICE uri: lb://USER-SERVICE predicates: - Path=/user/** 

In my main class

@SpringBootApplication @EnableEurekaClient public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } } 

my eureka server

I am able to access the services directly from their respective ports , But when I try to access the api's from port gateway port ie 9191, I get

***2022-09-08 16:23:34.644 ERROR 4128 --- [ctor-http-nio-3] a.w.r.e.AbstractErrorWebExceptionHandler : [7e6c1cec-3] 500 Server Error for HTTP GET "/user/getUserDepartment/1" java.net.UnknownHostException: Failed to resolve 'xxxxxxxx' after 5 queries at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1047) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): *__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain] __checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain] __checkpoint ⇢ HTTP GET "/user/getUserDepartment/1" [ExceptionHandlingWebHandler] Original Stack Trace: at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1047) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:1000) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:418) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:66) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:467) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsQueryContext.tryFailure(DnsQueryContext.java:256) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.resolver.dns.DnsQueryContext$4.run(DnsQueryContext.java:208) ~[netty-resolver-dns-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:153) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) ~[netty-transport-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.79.Final.jar:4.1.79.Final] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] Caused by: io.netty.resolver.dns.DnsNameResolverTimeoutException: [/xxxxxxx] query via UDP timed out after 5000 milliseconds (no stack trace available)

* Application.yml file of DepartmentService

server: port: 9001 spring: application: name: DEPARTMENT-SERVICE eureka: client: register-witheureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka/ instance: hostname: localhost prefer-ip-address: true 
3
  • Can you specify the routes file where you have specified the URL for DEPARTMENT-SERVICE? Do you have the cloud gateway service on Github to take a look at entire project? Commented Sep 8, 2022 at 16:09
  • Are you asking about the department service controller rest end point @VeeraraghavanN Commented Sep 8, 2022 at 16:22
  • @VeeraraghavanN the routing information is already added in the application.yml of the gatewayserver Commented Sep 8, 2022 at 16:31

1 Answer 1

3

I solved it by adding eureka.instance.prefer-ip-address=true and eureka.instance.prefer-ip-address=true in application.properties of all the microservices which are using the gateway service.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.