zkclient通过BlockingQueue实现多线程的事件驱动,当zkClient对象构造时,调用connect方法启动eventthread线程,eventthread线程的run实现如下:
@Override
public void run() {
LOG.info("Starting ZkClient event thread.");
try {
while (!isInterrupted()) {
ZkEvent zkEvent = _events.take();
int eventId = _eventId.incrementAndGet();
LOG.debug("Delivering event #" + eventId + " " + zkEvent);
try {
zkEvent.run();
} catch (InterruptedException e) {
interrupt();
} catch (ZkInterruptedException e) {
interrupt();
} catch (Throwable e) {
LOG.error("Error handling event " + zkEvent, e);
}
LOG.debug("Delivering event #" + eventId + " done");
}
} catch (InterruptedException e) {
LOG.info("Terminate ZkClient event thread.");
}
}
由zkClient对象调用thread的send方法向blockingqueue中写入一个ZkEvent,zkEvent本身是一个抽象类,zkClient通过实现其中的run方法,实现不同的业务功能,zkClient对象内部保存一个Map<String, Set<IZkChildListener>> _childListener作为观察者模式的listener。ZkEvent内部实现主要调用listener实现不同的方法。
分享到:
相关推荐
- `IZkDataListener`和`IZkChildListener`:这两个接口定义了数据变更和子节点变更的监听器,用于实现事件驱动的编程模型。 - `ZkConfig`:这个类用于配置ZkClient的行为,如设置连接超时时间、会话超时时间等。 - `...
1. **ZkClient 类**: 这是 zkclient 的核心类,包含了连接管理、会话管理、事件监听等功能的实现。 2. **Watch事件处理**: 研究 zkclient 如何注册和处理 ZooKeeper 的 Watcher 事件,了解其内部的事件调度机制。 ...
ZkClient是Github上一个开源的ZooKeeper客户端。ZkClient在ZooKeeper原生 API接口之上进行了包装,是一个更加易用的ZooKeeper客户端。同时,ZkClient在内部实现了诸如Session超时重连、Watcher反复注册等功能。
1. **Class Files**:这是Java编译后的字节码文件,它们包含了ZKClient的实现逻辑,如连接管理、会话处理、事件监听等。这些类文件是ZKClient的核心组成部分,比如`ZkClient`类,它是整个客户端的主要入口,提供了...
在"zookeeper客户端zkClient操作示例"中,我们可以学习到如何在Java应用中使用zkClient来实现ZooKeeper的各种操作。以下是一些关键的知识点: 1. **ZooKeeper数据模型**: ZooKeeper的数据模型类似于文件系统,由...
ZKClient支持多种类型的事件监听,如节点创建、删除、数据变更等。开发者可以通过实现`ZKListener`接口,注册监听器来处理这些事件,增强了对ZooKeeper状态变化的响应能力。 2. **异步操作**: 除了同步API,...
默认情况下,这些Watcher都是ZKClient自身,但如果需要更详细的事件处理逻辑,可以通过调用`subscribeDataChanges`、`subscribeChildChanges`等方法为路径绑定自定义的事件监听器。 - **处理ZooKeeper变更操作**:...
zkclient 项目项目介绍:zkclient 是对zookeeper java客户端进行的封装,主要实现了连接、断线重连,watch事件改为listen监听事件,分布式锁等注意: 使用时需要自行编译安装到maven或打成jar使用使用方式:...
2. **Watch事件处理**:ZKClient支持对Zookeeper节点的watcher注册和处理,当节点状态发生变化时,能够自动触发回调函数,实现分布式系统的实时监控。 3. **连接管理**:ZKClient具有自动重连和会话失效处理机制,...
1. **连接管理**:ZKClient提供了自动重连和会话事件处理机制,当ZooKeeper服务器断开连接后,它能够自动重新建立连接,确保服务的连续性。此外,它还支持连接池管理和多线程环境下的安全使用。 2. **数据监听**:...
赠送jar包:zkclient-0.10.jar; 赠送原API文档:zkclient-0.10-javadoc.jar; 赠送源代码:zkclient-0.10-sources.jar; 赠送Maven依赖信息文件:zkclient-0.10.pom; 包含翻译后的API文档:zkclient-0.10-javadoc-...
赠送jar包:zkclient-0.8.jar; 赠送原API文档:zkclient-0.8-javadoc.jar; 赠送源代码:zkclient-0.8-sources.jar; 赠送Maven依赖信息文件:zkclient-0.8.pom; 包含翻译后的API文档:zkclient-0.8-javadoc-API...
zkclient-2.1.1.jar
赠送jar包:zkclient-0.10.jar; 赠送原API文档:zkclient-0.10-javadoc.jar; 赠送源代码:zkclient-0.10-sources.jar; 赠送Maven依赖信息文件:zkclient-0.10.pom; 包含翻译后的API文档:zkclient-0.10-javadoc-...
赠送jar包:zkclient-0.1.jar; 赠送原API文档:zkclient-0.1-javadoc.jar; 赠送源代码:zkclient-0.1-sources.jar; 包含翻译后的API文档:zkclient-0.1-javadoc-API文档-中文(简体)版.zip 对应Maven信息:...
zkclient-0.8 2016新的jar包
非常方便订阅各种事件并自动重新绑定事件(会话建立、节点修改、节点删除、子节点变更等) session过期自动重连、机制 快速入门 下面部分将引导使用者快速入门。 快速指南: 简单快速入门使用,满足大部分需求 ...
zkclient-0.2.jar
从git上下载源码打包后的zkclient.jar