问题描述
我正在构建 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: true
和 fetch-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)