Springboot集成zookeeper组件

1)在父工程中添加zookeeper的相关依赖

<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>

<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>

2)创建ZookeeperConfig.java类,将zkCli注入容器

    @Bean(name = "zkClient")
public ZooKeeper zkClient() {
ZooKeeper zooKeeper = null;
try {
final CountDownLatch countDownLatch = new CountDownLatch(1);
zooKeeper = new ZooKeeper(connectString, timeout, new Watcher() {
@Override
public void process(WatchedEvent event) {
if (Event.KeeperState.SyncConnected == event.getState()) {
//如果收到了服务端的响应事件,连接成功
countDownLatch.countDown();
}
}
});
countDownLatch.await();
logger.info("【初始化ZooKeeper连接状态....】={}", zooKeeper.getState());
} catch (Exception e) {
logger.error("初始化ZooKeeper连接异常....】={}", e);
}
return zooKeeper;
}

}

3)创建WatcherApi实现watcher,重写process方法:

@Override
public void process(WatchedEvent event) {
logger.info("【Watcher监听事件】={}",event.getState());
logger.info("【监听路径为】={}",event.getPath());
logger.info("【监听的类型为】={}",event.getType()); // 三种监听类型: 创建,删除,更新
}
posted @ 2020-01-06 13:12  不缺重头再来的勇气  阅读(2932)  评论(0编辑  收藏  举报