java.util.concurrent.TimeoutException:在 10000 毫秒内未观察到“地图”中的任何项目或终端信号并且未配置回退

问题描述

我正在构建 Spring Boot Admin 代码并收到以下错误

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>admin-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>admin-server</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.3.1</spring-boot-admin.version>
        <spring-cloud.version>2020.0.2</spring-cloud.version>
    </properties>
    <dependencies>
        <!-- Spring Boot Admin -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        
        <!-- Third-party librairies -->
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.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>

</project>

bootstrap.yml

spring:
  cloud:
    config:
      enabled: true
      uri: http://localhost:9296
      
  application:
    name: admin-server
    
server:
  port: 9090
  
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
  instance:
    hostname: localhost
    prefer-ip-address: true

AdminServerApplication.java

@SpringBootApplication
@EnableAdminServer
@EnableEurekaClient
public class AdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminServerApplication.class,args);
    }

}

错误

2021-05-04 13:39:12.290  WARN 36752 --- [ctor-http-nio-1] io.netty.resolver.dns.DnsQueryContext    : Received a mismatching DNS response: DatagramDnsResponse(from: /172.30.160.1:53,to: /0:0:0:0:0:0:0:0:56414,52280,QUERY(0),NoError(0),RD RA)
    DefaultDnsQuestion(XXXXXXXXorg. IN A)
    DefaultDnsRawRecord(XXXXXXXXorg. 171 IN A 4B)
    DefaultDnsRawRecord(OPT flags:0 udp:4096 0B)
2021-05-04 13:39:12.882  INFO 36752 --- [           main] com.example.demo.AdminServerApplication  : Started AdminServerApplication in 6.649 seconds (JVM running for 7.875)
2021-05-04 13:39:17.355  WARN 36752 --- [ctor-http-nio-1] io.netty.resolver.dns.DnsQueryContext    : Received a mismatching DNS response: DatagramDnsResponse(from: /172.30.160.1:53,3238,RD AA RA)
    DefaultDnsQuestion(XXXXXXXXorg. IN CNAME)
    DefaultDnsRawRecord(corp.mastercard.org. 3600 IN SOA 56B)
    DefaultDnsRawRecord(OPT flags:0 udp:4000 0B)
2021-05-04 13:39:22.211  INFO 36752 --- [     parallel-5] d.c.b.a.server.services.StatusUpdater    : Couldn't retrieve status for Instance(id=162455d08d2a,version=0,registration=Registration(name=CONfig-SERVER,managementUrl=http://XXXXXXXXorg:9296/actuator,healthUrl=http://XXXXXXXXorg:9296/actuator/health,serviceUrl=http://XXXXXXXXorg:9296,source=discovery),registered=true,statusInfo=StatusInfo(status=UNKNowN,details={}),statusTimestamp=2021-05-04T08:09:12.195Z,info=Info(values={}),endpoints=Endpoints(endpoints={health=Endpoint(id=health,url=http://XXXXXXXXorg:9296/actuator/health)}),buildVersion=null,tags=Tags(values={}))

java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'map' (and no fallback has been configured)
    at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:294) ~[reactor-core-3.4.2.jar:3.4.2]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
    |_ checkpoint ⇢ Request to GET health [DefaultWebClient]
Stack trace:
        at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:294) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:279) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:418) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:119) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.4.2.jar:3.4.2]
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.4.2.jar:3.4.2]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_171]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_171]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_171]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_171]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_171]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_171]

解决方法

我能够解决这个问题。 基本上所有的微服务都应该使用以下配置。这里 prefer-ip-address: truefetch-registry: true 是这里的关键。

server:
  port: 8002

spring:
  application:
    name: user-service
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    
  jpa:
    generate-ddl: true
    hibernate:
      ddl-auto: create
 
#  zipkin:
#    base-url: http://127.0.0.1:9411/

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
  instance:
    prefer-ip-address: true
    hostname: localhost
    
,

白标错误页面 此应用程序没有配置错误视图,因此您将其视为后备。

2021 年 5 月 29 日星期六 15:14:50 IST [b0ee4ade-4] 出现意外错误(类型=内部服务器错误,状态=500)。 2 次查询后未能解析“INHYIZLP13766.domain.com” java.net.UnknownHostException:2 次查询后未能解析“INHYIZLP13766.domain.com” 在 io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1013) 抑制:reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 在以下站点发现错误: |_ 检查点⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain] |_ 检查点⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain] |_ 检查点 ⇢ HTTP GET "/registration/users-Feign" [ExceptionHandlingWebHandler] 堆栈跟踪: 在 io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1013) 在 io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:966) 在 io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:414) 在 io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:63) 在 io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:463) 在 io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) 在 io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) 在 io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:184) 在 io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:35) 在 io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:438) 在 io.netty.resolver.dns.DnsResolveContext.onResponse(DnsResolveContext.java:625) 在 io.netty.resolver.dns.DnsResolveContext.access$400(DnsResolveContext.java:63) 在 io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:458) 在 io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) 在 io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) 在 io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) 在 io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605) 在 io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) 在 io.netty.resolver.dns.DnsQueryContext.trySuccess(DnsQueryContext.java:201) 在 io.netty.resolver.dns.DnsQueryContext.finish(DnsQueryContext.java:193) 在 io.netty.resolver.dns.DnsNameResolver$DnsResponseHandler.channelRead(DnsNameResolver.java:1264) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) 在 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) 在 io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:97) 在 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) 在 io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) 在 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 在 java.base/java.lang.Thread.run(Thread.java:832) 引起:io.netty.resolver.dns.DnsNameResolverException: [/0.0.0.0:53] 无法通过 UDP 发送查询(没有可用的堆栈跟踪) 引起:java.net.BindException:无法分配请求的地址:无更多信息 在 java.base/sun.nio.ch.DatagramChannelImpl.send0(本机方法) 在 java.base/sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:897) 在 java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:859) 在 java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:817) 在 io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:296) 在 io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:143) 在 io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:953) 在 io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) 在 io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:917) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) 在 io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) 在 io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) 在 io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) 在 io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) 在 io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) 在 io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) 在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) 在 io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) 在 io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) 在 io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) 在 io.netty.resolver.dns.DnsQueryContext.writeQuery(DnsQueryContext.java:146) 在 io.netty.resolver.dns.DnsQueryContext.sendQuery(DnsQueryContext.java:125) 在 io.netty.resolver.dns.DnsQueryContext.query(DnsQueryContext.java:120) 在 io.netty.resolver.dns.DnsNameResolver.query0(DnsNameResolver.java:1222) 在 io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:432) 在 io.netty.resolver.dns.DnsResolveContext.onResponse(DnsResolveContext.java:625) 在 io.netty.resolver.dns.DnsResolveContext.access$400(DnsResolveContext.java:63) 在 io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:458) 在 io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) 在 io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) 在 io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) 在 io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605) 在 io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) 在 io.netty.resolver.dns.DnsQueryContext.trySuccess(DnsQueryContext.java:201) 在 io.netty.resolver.dns.DnsQueryContext.finish(DnsQueryContext.java:193) 在 io.netty.resolver.dns.DnsNameResolver$DnsResponseHandler.channelRead(DnsNameResolver.java:1264) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) 在 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) 在 io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:97) 在 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) 在 io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) 在 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 在 java.base/java.lang.Thread.run(Thread.java:832)