ZooKeeper Java API 使用教程 - 同步与异步操作示例

这篇具有很好参考价值的文章主要介绍了ZooKeeper Java API 使用教程 - 同步与异步操作示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

package com.zookeeper;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import java.io.IOException;
import java.util.List;
public class GetChildSync {
private static ZooKeeper zooKeeper;
public static void main(String[] args) {
try {
zooKeeper = new ZooKeeper(“192.168.40.135:2181”, 5000, new Watcher() {
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
doSomeThing();
}
}
});
System.out.println(“state:{}” + zooKeeper.getState());
Thread.sleep(Integer.MAX_VALUE);
}
catch (IOException e) {
System.out.println(“connect zk failed”);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void doSomeThing() {
List children = null;
try {
//false表示不需要需要关注子节点的变化
children = zooKeeper.getChildren(“/”, false);
}
catch (KeeperException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“children:” + children);
}
}

运行结果:

ZooKeeper,Java API,zookeeper之java API使用

如果需要关注子节点的变化:

package com.zookeeper;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import java.io.IOException;
import java.util.List;
public class GetChildSync {
private static ZooKeeper zooKeeper;
public static void main(String[] args) {
try {
zooKeeper = new ZooKeeper(“192.168.40.135:2181”, 5000, new Watcher() {
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
if (watchedEvent.getType() == Event.EventType.None && null == watchedEvent.getPath()) {
doSomeThing();
} else {
if (watchedEvent.getType() == Event.EventType.NodeChildrenChanged) {
try {
System.out.println(zooKeeper.getChildren(watchedEvent.getPath(), true));
}
catch (KeeperException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
});
System.out.println(“state:{}” + zooKeeper.getState());
Thread.sleep(Integer.MAX_VALUE);
}
catch (IOException e) {
System.out.println(“connect zk failed”);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void doSomeThing() {
List children = null;
try {
//false表示不需要需要关注子节点的变化
children = zooKeeper.getChildren(“/”, true);
}
catch (KeeperException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“children:” + children);
}
}

运行结果:

通过服务端给根节点添加一个子节点,就会打印出来:

ZooKeeper,Java API,zookeeper之java API使用

异步获取:


package com.zookeeper;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import java.io.IOException;
import java.util.List;
public class GetChildASync {
private static ZooKeeper zooKeeper;
public static void main(String[] args) {
try {
zooKeeper = new ZooKeeper(“192.168.40.135:2181”, 5000, new Watcher() {
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
if (watchedEvent.getType() == Event.EventType.None && null == watchedEvent.getPath()) {
doSomeThing();
} else {
if (watchedEvent.getType() == Event.EventType.NodeChildrenChanged) {
zooKeeper.getChildren(watchedEvent.getPath(), true, new ChildrenClallBack(), “异步获取”);
}
}
}
}
});
System.out.println(“state:{}” + zooKeeper.getState());
Thread.sleep(Integer.MAX_VALUE);
}
catch (IOException e) {
System.out.println(“connect zk failed”);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
static class ChildrenClallBack implements AsyncCallback.Children2Callback {
/**
@param rc 返回码,如果异步创建成功,返回0
@param path 创建节点的完整路径
@param ctx 异步调用的上下文,。。也就是上面传下来的“异步获取”字符串
@param children
@param stat
*/
public void processResult(int rc, String path, Object ctx, List children, Stat stat) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(“rc=” + rc).append(“\n”);
stringBuilder.append(“path=” + path).append(“\n”);
stringBuilder.append(“ctx=” + ctx).append(“\n”);
stringBuilder.append(“children=” + children).append(“\n”);
stringBuilder.append(“stat=” + stat).append(“\n”);
System.out.println(stringBuilder.toString());
}
}
private static void doSomeThing() {
//false表示不需要需要关注子节点的变化
zooKeeper.getChildren(“/”, true, new ChildrenClallBack(), “异步获取”);
}
}

运行结果:

ZooKeeper,Java API,zookeeper之java API使用

同步获取节点数据:


package com.zookeeper;

import org.apache.zookeeper.KeeperException;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooKeeper;

import org.apache.zookeeper.data.Stat;

import java.io.IOException;

public class GetDataSync {

private static ZooKeeper zooKeeper;

private static Stat stat = new Stat();

public static void main(String[] args) {

try {

zooKeeper = new ZooKeeper(“192.168.40.135:2181”, 5000, new Watcher() {

public void process(WatchedEvent watchedEvent) {

if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {

if (watchedEvent.getType() == Event.EventType.None && null == watchedEvent.getPath()) {

doSomeThing();

} else {

if (watchedEvent.getType() == Event.EventType.NodeDataChanged) {

try {

System.out.println(new String(zooKeeper.getData(watchedEvent.getPath(), true, stat)));

}文章来源地址https://www.toymoban.com/news/detail-855674.html

catch (KeeperException e) {

e.printStackTrace();

}

catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

});

System.out.println(“state:{}” + zooKeeper.getState());

Thread.sleep(Integer.MAX_VALUE);

}

catch (IOException e) {

System.out.println(“connect zk failed”);

}

catch (InterruptedException e) {

e.printStackTrace();

}

}

private static void doSomeThing() {

byte[] data = null;

try {

//false表示不需要需要关注子节点的变化

data = zooKeeper.getData(“/node_5”, true, stat);

}

catch (KeeperException e) {

e.printStackTrace();

}

catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(“data:” + new String(data));

System.out.println(“stat:” + stat);

}

}

运行结果:

ZooKeeper,Java API,zookeeper之java API使用

异步获取节点数据:


package com.zookeeper;

import org.apache.zookeeper.AsyncCallback;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooKeeper;

import org.apache.zookeeper.data.Stat;

import java.io.IOException;

public class GetDataASync {

private static ZooKeeper zooKeeper;

public static void main(String[] args) {

try {

zooKeeper = new ZooKeeper(“192.168.40.135:2181”, 5000, new Watcher() {

public void process(WatchedEvent watchedEvent) {

if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {

if (watchedEvent.getType() == Event.EventType.None && null == watchedEvent.getPath()) {

doSomeThing();

} else {

if (watchedEvent.getType() == Event.EventType.NodeDataChanged) {

zooKeeper.getData(watchedEvent.getPath(), true, new DataClallBack(), “异步获取节点数据”);

}

}

}

}

});

Thread.sleep(Integer.MAX_VALUE);

}

catch (IOException e) {

System.out.println(“connect zk failed”);

}

到了这里,关于ZooKeeper Java API 使用教程 - 同步与异步操作示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka学习---2、kafka生产者、异步和同步发送API、分区、生产经验

    1.1 生产者消息发送流程 1.1.1 发送原理 在消息发生的过程中,设计到了两个线程——main线程和Sender线程。在main线程中创建了一个双端队列RecordAccumulator。main线程将消息发给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka Broker。 batch.size:只有数据积累到bat

    2024年02月09日
    浏览(46)
  • 【flink番外篇】9、Flink Table API 支持的操作示例(14)- 时态表的join(java版本)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月02日
    浏览(56)
  • 【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例

    查看官方文档“ Get a user ” , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息。   使用Microsoft Graph API,演示如何获取AAD User信息,因参考文档是针对Global Azure,所以文档种的URL为:  需要修改为   那么:如何来获取Access Token呢?    1) 设置登录

    2023年04月13日
    浏览(48)
  • 前端同步异步讲解--Ajax(axios进阶)的相关操作

    之前我们讲到了数据在前后端传输是依赖xml文件,但是由于时代变迁,他也已经比逐步淘汰,json对象就逐步开始作为数据传输通道的桥梁,忘记的话可以去回顾文章对应的json对象 最全的前端知识之css与jsp介绍-CSDN博客 文章浏览阅读1k次,点赞31次,收藏21次。ok了,宝子们,

    2024年02月21日
    浏览(74)
  • Zookeeper集群写操作的具体流程和数据同步

    写操作:zk中向leader进行一个节点的写操作时,leader会向所有的Follower发送这个写操作,当Follower的写操作超过半数成功时会将成功的结果返回给leader。 数据同步:当写操作完成之后,zk集群会进行数据同步,leader将写操作完成的结果通知给所有的Follower节点,所有的Follwer节点

    2024年02月09日
    浏览(46)
  • chatgpt|安装及示例|聊天|嵌入|微调|适度|图像|音频|异步|API 错误代码-OpenAI Python库简介

    项目git地址 OpenAI Python 库提供了对 OpenAI API 的便捷访问来自用 Python 语言编写的应用程序。它包括一个用于初始化的 API 资源的预定义类集自己从 API 响应动态地使其兼容具有广泛版本的 OpenAI API。 您可以在官方的网站中找到 OpenAI Python 库的使用示例 API reference and the OpenAI Coo

    2023年04月15日
    浏览(55)
  • 4、Elasticsearch7.6.1 Java api操作ES(CRUD、两种分页方式、高亮显示)和Elasticsearch SQL详细示例

    1、介绍lucene的功能以及建立索引、搜索单词、搜索词语和搜索句子四个示例实现 2、Elasticsearch7.6.1基本介绍、2种部署方式及验证、head插件安装、分词器安装及验证 3、Elasticsearch7.6.1信息搜索示例(索引操作、数据操作-添加、删除、导入等、数据搜索及分页) 4、Elasticsearch7

    2024年02月16日
    浏览(79)
  • Java中的同步和异步

    在Java中,同步(Synchronous)和异步(Asynchronous)是用来描述程序执行模式的概念。 1. 同步:同步指的是按照程序的顺序依次执行代码,每个操作都会等待前一个操作完成后再执行。同步执行的特点是阻塞,即某个操作的完成会导致后续操作的等待。在多线程编程中,同步可以

    2024年02月07日
    浏览(80)
  • JavaScript中的Concurrency并发:异步操作下的汉堡制作示例

    这篇文章想讲一下JavaScript中同步与异步操作在一个简单的示例中的应用。我们将以制作汉堡为例,展示如何使用同步方法、回调函数(callbacks)和Promise与async/await来实现该过程。 1. Get ingredients 获取原料(比如beef) 2. Cook the beef  烹饪牛肉 3. Get burger buns 获得面包片 4. Put th

    2024年02月02日
    浏览(41)
  • JAVA的回调机制、同步/异步调用

    同步调用是最基本的调用方式。类A的a()方法调用类B的b()方法, 类A的方法需要等到B类的方法执行完成才会继续执行 。如果B的方法长时间阻塞,就会导致A类方法无法正常执行下去。 如果A调用B,B的执行时间比较长,那么就需要考虑进行异步处理,使得B的执行不影响A。通常

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包