springboot+nacos discovery启动报错:java.net.SocketException: Socket closed

问题

springboot项目引入nacos discovery之后启动报错:

2022-04-10 13:39:51.329 ERROR 81872 --- [g.push.receiver] com.alibaba.nacos.client.naming          : [NA] error while receiving push data

java.net.SocketException: Socket closed
	at java.net.PlainDatagramSocketImpl.receive0(Native Method) ~[na:1.8.0_312]
	at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143) ~[na:1.8.0_312]
	at java.net.DatagramSocket.receive(DatagramSocket.java:812) ~[na:1.8.0_312]
	at com.alibaba.nacos.client.naming.core.PushReceiver.run(PushReceiver.java:83) ~[nacos-client-1.3.2.jar:na]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_312]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_312]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_312]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_312]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_312]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_312]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_312]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_312]

思路

这类问题,先排查配置文件,检查是否有错误的配置项,我的检查下来并没有发现配置文件有问题,这里提供一份配置文件,以供参考

# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextPath=/nacos
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=localhost:8848
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
# spring.cloud.nacos.config.namespace=
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
#spring.cloud.nacos.discovery.namespace=public

spring.cloud.nacos.config.file-extension=yaml
spring.profiles.active=dev

最终解决

既然配置文件不是问题,而nacos discovery的使用本身也没有那么复杂,检查了注册中心和配置中心的注解也添加上了
@EnableDiscoveryClient
@EnableAutoConfiguration

最后想了下报错是socket 关闭,说明是接口请求的问题,于是就检查了下pom文件发现并没有添加spring web依赖,所以自然不支持接口请求。于是将Spring web的依赖添加上即可

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

相信我这里的解决方案并不是全量解决方案,也仅仅只是将自己遇到的问题抛上来,供大家后续排错了。

猜你喜欢

转载自blog.csdn.net/qq_24950043/article/details/124084920
今日推荐