【Dubbo】为什么Dubbo总和ZooKeeper连接不上,显示Caused by: java.lang.IllegalStateException: zookeeper not connected

相信有不少小伙伴和我一样,兴冲冲地安装好zookeeper,然后本地idea里写好一个简单的demo连接远程zookeeper时,却惨遭idea浇了一盆冷水,为什么会显示Caused by: java.lang.IllegalStateException: zookeeper not connected这样的错误信息,关键是真得只提示了这样的错误,没有其它任何报错信息,这让修改bug的我们就很难去快速定位错误的地方。没有办法只有一步一步盘查了。

我是在阿里云服务器上,安装了zookeeper,然后在本地机器上建立了一个springboot的demo程序来连接zookeeper,配置如下:

这是启动之后的zookeeper,请注意!在虚拟机上解压好zookeeper之后,启动的时候你可能会遇到各种问题,比如下载3.5.X版本的zookeeper的同学,要下载那个带有bin名称的包它才是可以直接使用的,里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。

【Dubbo】为什么Dubbo总和ZooKeeper连接不上,显示Caused by: java.lang.IllegalStateException: zookeeper not connected

还有启动好之后,请务必开发阿里云服务器的2181的端口(如果你设置的是其它的端口,那就开放对应的端口即可)。

接着就是在本地编写一个简单的demo程序(我是跟着B站的狂神说这个up主学习的,大家感兴趣的也可以去看下):

【Dubbo】为什么Dubbo总和ZooKeeper连接不上,显示Caused by: java.lang.IllegalStateException: zookeeper not connected

就是简单的配置了下,然后由于一开始连接不上远程的zookeeper服务器,就按照网上别人的经验,设置了一下dubbo连接的超时时间,本来默认是3000(也是3S),这里可以把数字设置的大一点。

dubbo.config-center.timeout=25000

但是这样子还是不行,仍然显示not connected。这个时候没办法,自己以为可能引起问题的原因是:

1.远程IP地址输入错误

2.阿里云服务器端口没有开放

经过测试,上述两个原因全都排除,没有办法,再在本地下载一个zookeeper,看看能不能连上本地的。

继续折腾:然后连接本地的zookeeper,这回好了,报的错不一样了,提示缺失org.apache.zookeeper.server.quorum.QuorumPeerMain以及KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented。

看来是我程序的问题了,和连接没有关系。然后继续在网上查找原因,发现别人出错是因为,下载的3.5.X的源码版本,刚刚上面已经说过了,要下载bin版本的。好了嘛,继续找!终于找到了一位大哥的博客,上面说引起这个错误的原因是,pom文件中导入zookeeper版本的问题,好了,继续试了,把curator的版本也给换了,换成和大哥一样的版本,修改完之后,连接本地,成功连接,连接阿里云服务器,成功连接!终于成功了,下面放上我的版本配置,

【Dubbo】为什么Dubbo总和ZooKeeper连接不上,显示Caused by: java.lang.IllegalStateException: zookeeper not connected

对了,我的linux服务器上使用的是3.4.12版本的zookeeper。

最后放上大哥的博客链接:https://blog.csdn.net/qq_22067469/article/details/84342260