`
liudunxu2
  • 浏览: 32144 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

zkclient的事件驱动实现

 
阅读更多

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实现不同的方法。
分享到:
评论

相关推荐

    zkclient-2.1.1.rar

    - `IZkDataListener`和`IZkChildListener`:这两个接口定义了数据变更和子节点变更的监听器,用于实现事件驱动的编程模型。 - `ZkConfig`:这个类用于配置ZkClient的行为,如设置连接超时时间、会话超时时间等。 - `...

    zkclient 1.0 源码包

    1. **ZkClient 类**: 这是 zkclient 的核心类,包含了连接管理、会话管理、事件监听等功能的实现。 2. **Watch事件处理**: 研究 zkclient 如何注册和处理 ZooKeeper 的 Watcher 事件,了解其内部的事件调度机制。 ...

    zookeeper开源客户端ZkClient使用

    ZkClient是Github上一个开源的ZooKeeper客户端。ZkClient在ZooKeeper原生 API接口之上进行了包装,是一个更加易用的ZooKeeper客户端。同时,ZkClient在内部实现了诸如Session超时重连、Watcher反复注册等功能。

    zkclient-0.3.jar

    1. **Class Files**:这是Java编译后的字节码文件,它们包含了ZKClient的实现逻辑,如连接管理、会话处理、事件监听等。这些类文件是ZKClient的核心组成部分,比如`ZkClient`类,它是整个客户端的主要入口,提供了...

    zookeeper客户端zkClient操作示例

    在"zookeeper客户端zkClient操作示例"中,我们可以学习到如何在Java应用中使用zkClient来实现ZooKeeper的各种操作。以下是一些关键的知识点: 1. **ZooKeeper数据模型**: ZooKeeper的数据模型类似于文件系统,由...

    zkclient-0.10

    ZKClient支持多种类型的事件监听,如节点创建、删除、数据变更等。开发者可以通过实现`ZKListener`接口,注册监听器来处理这些事件,增强了对ZooKeeper状态变化的响应能力。 2. **异步操作**: 除了同步API,...

    zkclient文档

    默认情况下,这些Watcher都是ZKClient自身,但如果需要更详细的事件处理逻辑,可以通过调用`subscribeDataChanges`、`subscribeChildChanges`等方法为路径绑定自定义的事件监听器。 - **处理ZooKeeper变更操作**:...

    zkClient:实现zookeeper客户端,实现客户端连接,重连,基本数据操作,监听等功能

    zkclient 项目项目介绍:zkclient 是对zookeeper java客户端进行的封装,主要实现了连接、断线重连,watch事件改为listen监听事件,分布式锁等注意: 使用时需要自行编译安装到maven或打成jar使用使用方式:...

    zkclient各版本型号.rar

    2. **Watch事件处理**:ZKClient支持对Zookeeper节点的watcher注册和处理,当节点状态发生变化时,能够自动触发回调函数,实现分布式系统的实时监控。 3. **连接管理**:ZKClient具有自动重连和会话失效处理机制,...

    zkclient jar包

    1. **连接管理**:ZKClient提供了自动重连和会话事件处理机制,当ZooKeeper服务器断开连接后,它能够自动重新建立连接,确保服务的连续性。此外,它还支持连接池管理和多线程环境下的安全使用。 2. **数据监听**:...

    zkclient-0.10-API文档-中文版.zip

    赠送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-...

    zkclient-0.8-API文档-中文版.zip

    赠送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

    zkclient-2.1.1.jar

    zkclient-0.10-API文档-中英对照版.zip

    赠送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-...

    zkclient-0.1-API文档-中文版.zip

    赠送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.jar

    zkclient-0.8 2016新的jar包

    ZookeeperJava客户端zkclient.zip

    非常方便订阅各种事件并自动重新绑定事件(会话建立、节点修改、节点删除、子节点变更等) session过期自动重连、机制 快速入门 下面部分将引导使用者快速入门。 快速指南: 简单快速入门使用,满足大部分需求 ...

    zkclient-0.2.jar

    zkclient-0.2.jar

    zkclient.jar

    从git上下载源码打包后的zkclient.jar

Global site tag (gtag.js) - Google Analytics