package cn.hbaf.zookeeper_api;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.TreeCache;
import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
import org.apache.curator.framework.recipes.cache.TreeCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.junit.Test; public class ZookeeperAPITest { /*
节点的watch机制
*/ @Test
public void watchZnode() throws Exception {
//1: 定制重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start();
//4:创建TreeCache对象,指定要监控的节点路径
TreeCache treeCache = new TreeCache(client,"/hello2"); // 5:自定义一个监听器
treeCache.getListenable().addListener(new TreeCacheListener() {
@Override
public void childEvent(
CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent)
throws Exception {
ChildData data = treeCacheEvent.getData();
if (data != null) {
switch (treeCacheEvent.getType()) {
case NODE_ADDED:
System.out.println("监控到有新增节点");
break;
case NODE_REMOVED:
System.out.println("监控到有节点被移除");
break;
case NODE_UPDATED:
System.out.println("有节点更新");
break;
default:
break;
}
}
}
});
//开始监听
treeCache.start();
Thread.sleep(200000);
} /*
获取节点数据
*/ @Test
public void getZnodeData() throws Exception {
//定制重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start(); byte [] bytes = client.getData().forPath("/hello");
System.out.println(new String(bytes));
client.close(); } /*
设置节点数据
*/ @Test
public void setZnodeData() throws Exception {
//定制重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start(); client.setData().forPath("/hello","zookeeper".getBytes()); client.close(); } /*
创建临时节点
*/ @Test
public void createTmpZnode() throws Exception {
//1:定制重试策略
/*
param1:重试时间间隔
param2:重试最大次数
* */
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1);
//2:获取一个客户端对象
/*
* param1:服务器列表
* param2:会话超时时间
* param3:链接超时时间
* param4:重试策略
* */
String connectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181";
CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr,8000,8000,retryPolicy); //3:开启客户端
client.start(); //4:创建节点
client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello3","world".getBytes()); Thread.sleep(5000);
//5:关闭客户端
client.close();
}
/*
创建永久节点
*/ @Test
public void createZnode() throws Exception {
//1:定制重试策略
/*
param1:重试时间间隔
param2:重试最大次数
* */
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1);
//2:获取一个客户端对象
/*
* param1:服务器列表
* param2:会话超时时间
* param3:链接超时时间
* param4:重试策略
* */
String connectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181";
CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr,8000,8000,retryPolicy); //3:开启客户端
client.start(); //4:创建节点
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello2","world".getBytes()); //5:关闭客户端
client.close();
}
}

zookeeper操作节点代码的更多相关文章

  1. zookeeper客户端使用原生JavaApi操作节点

    1.引入依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zook ...

  2. dubbo源码解析-zookeeper创建节点

    前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码 ...

  3. zookeeper实战:SingleWorker代码样例

    我们需要一个“单点worker”系统,此系统来确保系统中定时任务在分布式环境中,任意时刻只有一个实例处于活跃:比如,生产环境中,有6台机器支撑一个应用,但是一个应用中有30个定时任务,这些任务有些必须 ...

  4. 第8章 ZooKeeper操作

    目录 8.1 集群环境搭建 1.上传ZooKeeper安装文件 2.编写配置文件 3.拷贝ZooKeeper安装信息到其它节点 4.修改其它节点配置 5.启动ZooKeeper 6.查看启动状态 7. ...

  5. Zookeeper操作

    Zookeeper操作 注意搭建: 1.集群规模不小于3个节点 2.服务器之间系统时间要保持一致 1.搭建步骤: 1.解压安装包 2.设置zookeeper环境变量 3.修改配置文件————zoo.c ...

  6. Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)

    本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...

  7. Ignite集群管理——基于Zookeeper的节点发现

    Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于Zookeeper的节点发现. 环境准备,两台笔记本电脑A,B.A笔记本上使用VMware虚拟机安装了U ...

  8. JS---DOM---点击操作---节点的方式---案例

    点击操作---节点的方式---案例 案例1:点击按钮,设置p变色---节点的方式做 <!DOCTYPE html> <html lang="en"> < ...

  9. jQuery 中使用 DOM 操作节点,对页面中的表格实现增、删、查、改操作

    查看本章节 查看作业目录 需求说明: 在 jQuery 中使用 DOM 操作节点,对页面中的表格实现增.删.查.改操作 点击"增加"超链接时,将表格中的第一条数据添加到表格的末尾 ...

随机推荐

  1. JAVA——转义字符

    目录 1.Java转义字符 2.Java中的注释 2.1Java 中的注释类型 2.2文档注释 3.Java代码规范 4.Java开发注意事项和细节说明 1.Java转义字符 在控制台,输入 tab ...

  2. JAVA——类与对象

    目录 类与对象 一.类 二.对象 2.1对象的内存布局形式 三.类与对象 3.1如何创建 3.2如何访问属性 3.2类与对象的分配机制 3.2.1Java内存的结构分析 注意事项和细节 类与对象 为什 ...

  3. 如何使用 VS Code 远程连接矩池云主机

    Visual Studio Code(以下简称 VS Code)是一个由微软开发的代码编辑器.VS Code 支持代码补全.代码片段.代码重构.Git 版本控制等功能. VS Code 现已支持连接远 ...

  4. java中的List接口(ArrayList、Vector、LinkedList)

    一.List接口有三个常用的集合(ArrayList.Vector.LinkedList) ArrayList注意事项 ArrayList底层是用数组来实现数据存储的 底层是 transient Ob ...

  5. 为游戏编写boss剧情

    教程目录: 1. 小游戏展示 2. 下载游戏引擎 3. 创作一个移动的背景 4. 让阿菌煽动翅膀 5. 让阿菌模拟重力下坠 6. 让阿菌可以摸鱼 7. 编写游戏开始与结束 8. 编写 boss 剧情 ...

  6. 小程序WXS 模块

    WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构 WXS中定义的函数可以在wxml文件中使用,可以用它来当过滤器使用 WXS以.wxs扩展名结尾,文件中 ...

  7. 自己动手写Vector【Cherno C++教程】

    动手写一个Vector 本文是对<最好的C++教程>的动手写数据结构部分的一个整理,主要包含91p动手写Array数组和92p动手写Vector数组的内容. 自己动手来写这些数据结构是学习 ...

  8. 【基础】工作中常用的linux命令,经常会被面试官问到

    前言 面试经常会问到一些Linux操作命令,下面就工作中常用的和面试问的频率较高的命令做详细描述. 常用命令 修改密码:passwd 用户名 切换用户名:su 用户名 查看当前路径:pwd 调整路径: ...

  9. JDBC快速入门(附Java通过jar包连接MySQL数据库)

    •通过jar包连接mysql数据库 •下载jar包 Java 连接 MySQL 需要驱动包,官网下载地址为MySQL驱动包官网下载,选择适合的jar包版本进行安装 (记得安装的地址,下面导入包时会用到 ...

  10. 重写hashcode和equals方法

    重写hashcode和equals方法 简乐君 2019-05-07 21:55:43 35481 收藏 191分类专栏: Java 文章标签: equals() hashcode()版权 一.前言我 ...