首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用spring云api网关

无法使用spring云api网关
EN

Stack Overflow用户
提问于 2022-09-08 10:56:28
回答 1查看 288关注 0票数 0

我正在开发一个示例poc,并试图集成spring云api网关。

在我的pom.xml里

代码语言:javascript
复制
<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里

代码语言:javascript
复制
       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/**

在我的主课上

代码语言:javascript
复制
@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错误4128 - ctor-http-nio-3 a.w.r.e.AbstractErrorWebExceptionHandler :7e6c1cec-3500server Error "/user/getUserDepartment/1“java.net.UnknownHostException:在reactor.core.publisher.FluxOnAssembly$OnAssemblyException的5次查询后未能解析'xxxxxxxx‘:在以下站点观察到错误: org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter⇢DefaultWebFilterChain __checkpoint⇢__checkpoint DefaultWebFilterChain __checkpoint⇢HTTP "/user/getUserDepartment/1“ExceptionHandlingWebHandler原始堆栈跟踪: 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.Finalio.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-io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)-4.1.79.Final.jar:4.1.79.Final.jar:4.1.79io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) ~nettyio.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609) ~nettyio.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.jar:4.1.79.Final.jar:4.1.79.Final.jar:4io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~nettyio.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.jar:4.1.79.Final.jar:4.1.79.Final.jar:4io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~netty处的.1.79.Final --常见-4.1.79.Final.jar:4.1.79. timed at java.base/java.lang.Thread.run(Thread.java:834) ~na:na,由: io.netty.resolver.dns.DnsNameResolverTimeoutException: /xxxxxxx查询引起的,经过5000毫秒后超时(没有堆栈跟踪)

* Application.yml文件的DepartmentService

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-09-09 13:21:22

我通过在所有使用网关服务的微服务的eureka.instance.prefer-ip-address=trueeureka.instance.prefer-ip-address=true中添加application.properties来解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73647949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档