一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
今天说下Springboot整合Zookeeper,代码很简陋,但是可以连接上,哈哈;
首先还是最基础的导入pom文件将Zookeeper的jar引入进来,刷新maven;
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.2</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
引入进来后我们要写个配置方法这个随便你写啦,获取到对象就行了,网上都是简单的一个demo,花里胡哨,我就抄了一个过来;
首先我们在yaml文件里配置Zookeeper的服务地址;并给上一个连接的超时时间,然后在配置类中读取他们;
定义个对象private static ZooKeeper zkClient;
zkClient = new ZooKeeper(address, timeout, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
log.info("连接成功");
} }});
System.out.println("zookeeper初始化状态" + zkClient.getState());
创建该zk的对象,下面我们再写个方法get这个请求就表示我们取到了这个对象,这里我们可以加个bean,表示启动时候就加载这个方法,那我们在启动成功的时候查看日志,看有没有打连接成功,如果没有,我们就要看下端口是否打开了,我们可以用Telnet试试先,然后如果是云服务器的话,要看下安全组是否配置了,以及这个安全组配置的是不是你的那个实例下的(别问为啥说这么多,说就是被这个坑了很长时间),这里也说下,不要关闭防火墙,不要,你要是虚拟机关就关了,云服务器不要关,防火墙造出来不是让你关的,我不理解网上很多方案为啥全是让关防火墙的;开端口不清楚的可以看我之前的文章(我是阿里云);
连接成功后我们要写我们的业务逻辑层了,工具方法也去网上百度吧,我写了个exists和get的方法用于验证;
System.out.println("wode "+ZooKeeper.getZkBean().exists("/m1",true));
byte[] data = ZooKeeper.getZkBean().getData("/m1", new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
}},
new Stat());
log.info(new String(data));
这里注意我上面的exists方法,存在会返回个stat对象(状态),不存在返回null;
response.getStat().getCzxid() == -1 ? null : response.getStat();
下面的get我们可以获取该节点对应的值,比如我存了个“/m1”,查出来就是newm2
这样就可以看到我们的内容啦,*下面的那一大串是节点的状态信息,不必考虑;
好啦,现在,连上了项目,下面我们要一点一点往上加buff了;再说一句云服务不要关闭防火墙;