簡體   English   中英

無法使用spring雲api網關

[英]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=trueeureka.instance.prefer-ip-address=true來解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM