[英]Unable to make a call to actual service using API Gateway Spring Cloud
[英]Unable to use spring cloud api gateway
我正在開發一個示例 poc,我正在嘗試集成 spring 雲 api 網關
在我的 pom.xml 我有
<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>
在我的 application.yml 我有
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/**
在我的主要 class
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
我可以直接從它們各自的端口訪問服務,但是當我嘗試從端口網關端口(即 9191)訪問 api 時,我得到
***2022-09-08 16:23:34.644 ERROR 4128 --- [ctor-http-nio-3] awr.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] 抑制:reactor.core.publisher.FluxOnAssembly$OnAssemblyException:在以下站點觀察到錯誤:*__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" [E xceptionHandlingWebHandler] 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] 在 io.netty.resolver.ZB3BF60B851EBAEB27 68B01A32E2EF32FZ.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.iocurrent.netutil.默認P romise.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] 在 io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:111.7)~[.netty-common-4.79] 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.承諾任務 .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] 在 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)~[netty-common-4.1.79.Final.Z68995FCBF432492D40484.D014A9.2F] .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. Z93F725A07423 FE1C889F448B33D21F46Z: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堆棧跟蹤可用)
* DepartmentService的Application.yml文件
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
我通過在使用網關服務的所有微服務的 application.properties 中添加eureka.instance.prefer-ip-address=true
和eureka.instance.prefer-ip-address=true
來解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.