导航
导航

zk opening socket error

之前集成自己的apiregistry组件的项目启动时候会如下报错


2021-04-28 18:59:21.406 |-INFO [main-SendThread()] org.apache.zookeeper.ClientCnxn [] -| Opening socket connection to server 10.20.26.52/10.20.26.52:2181. Will not attempt to authenticate using SASL (unknown error)
2021-04-28 18:59:21.407 |-WARN [main-SendThread()] org.apache.zookeeper.ClientCnxn [] -| Client session timed out, have not heard from server in 9035ms for sessionid 0x0
2021-04-28 18:59:21.408 |-INFO [main-SendThread()] org.apache.zookeeper.ClientCnxn [] -| Client session timed out, have not heard from server in 9035ms for sessionid 0x0, closing socket connection and attempting reconnect
2021-04-28 18:59:31.518 |-INFO [main-SendThread()] org.apache.zookeeper.ClientCnxn [] -| Opening socket connection to server 10.20.26.52/10.20.26.52:2181. Will not attempt to authenticate using SASL (unknown error)
2021-04-28 18:59:31.518 |-WARN [main-SendThread()] org.apache.zookeeper.ClientCnxn [] -| Client session timed out, have not heard from server in 10007ms for sessionid 0x0


一直以为原因是zk权限。

后来发现是bean注入的顺序原因导致。

之前我使用的是@PostConstruct

后面改成了spring的监听模式ApplicationListener等所有bean初始化完成后再执行操作。

Spring Boot 中的 ClassLoader 会优先加载项目中的文件,而不是依赖包中的文件。所以如果在你的项目中定义个spring.factories文件,那么你项目中的文件会被第一个加载,得到的Factories中,项目中spring.factories里配置的那个实现类也会排在第一个