Invocation of init method failed; nested exception is org.apache.shardingsphere.elasticjob.reg.exception.RegException: org.apache.zookeeper.KeeperException$OperationTimeoutException: KeeperErrorCode = OperationTimeout
背景
最近在搭建ElasticJob使用环境时发现一个报错,提示zookeeper连接失败。明明yml里配置的zookeeper地址是正确的,但就是连不上。查阅相关文档和各种尝试后终于找到了问题原因。
以下是本例使用的依赖版本。
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
原因
原来是因为默认连接zookeeper的时间太短了,zookeeper还没响应这边就提示报错。
解决方案
修改配置文件即可
elasticjob:
regCenter:
serverLists: localhost:2181
namespace: springboot-elasticjob
# 加上下面的等待重试时间的配置即可
# 等待重试的间隔时间的初始值 单位:毫秒
base-sleep-time-milliseconds: 10000
# 等待重试的间隔时间的最大值
max-sleep-time-milliseconds: 30000
# 最大重试次数
max-retries: 3
# 会话超时时间 单位: 毫秒
session-timeout-milliseconds: 600000
# 连接超时时间 单位: 毫秒
connection-timeout-milliseconds: 600000
加上重试的间隔时间配置后,重启项目就可以正常启动了。