• 第1关:会话创建与关闭


    为了完成本关任务,你需要掌握: 1.ZooKeeper 的实例化; 2.实例化中不同参数的作用。

    客户端连接ZooKeeper服务器

    要连接 ZooKeeper 的服务器,实例化一个 ZooKeeper 对象即可,使用以下 API:

     
    
    ZooKeeper(String connectString, int sessionTimeout, Watcher watcher)

    其中 connectString 表示主机名和 ZooKeeper 服务器的端口。 sessionTimeout 表示 ZooKeeper 等待客户端通信的最长时间,该参数以毫秒为单位,一般设置超时时间为 5000-15000 毫秒。watcher 用于监听节点的状态变化,如果发生变化则通知此 watcher ,做出相应处理。如果不需要监听,则可设置为 null。

    声明一个 ZooKeeper 的对象示例:

    ZooKeeper zk = ("localhost:2181", 15000, null);

    该对象会去连接本地 (localhost)zookeeper 服务器,设置会话超时时间为 15000 毫秒,且不监视节点状态变化。

    断开ZooKeeper的连接

    断开客户端和服务器之间的连接,直接使用实例化之后的 zk 对象,调用 close()方法即可,如下所示:

    示例如下:

    1. // 创建方法 createZKInstance,用于连接 ZooKeeper 服务器
    2. private void createZKInstance() throws IOException {
    3. // 创建 zk 实例
    4. zk = new ZooKeeper("127.0.0.1:2181", 15000, null);
    5. }
    6. // 创建方法 ZKClose,用于关闭连接
    7. private void ZKClose() throws InterruptedException {
    8. zk.close();
    9. }

    实现一个Watcher

    为了从 ZooKeeper 接收消息,需要实现监视点。监视点主要是 Watcher 接口,该接口的定义如下:

    1. public interface Watcher{
    2. void process(WatcherEvent event);
    3. }

    Watcher 接口中没有实现任何内容,因此,我们可以在 process 方法中实现自己的逻辑。

    1. public void process(WatchedEvent event) {
    2. System.out.println(event);
    3. }

    在上面的代码中,我们简单的将事件输出,当然了,也可以根据实际需要,更改代码。

    本节实训的示例程序及运行结果输出如下所示:

    1. import org.apache.zookeeper.WatchedEvent;
    2. import org.apache.zookeeper.Watcher;
    3. import org.apache.zookeeper.ZooKeeper;
    4. public class test1 {
    5. // 实现一个 Watcher
    6. private Watcher wh = new Watcher() {
    7. public void process(WatchedEvent event) {
    8. System.out.println(event);
    9. }
    10. };
    11. // 创建方法 createZKInstance,用于连接 ZooKeeper 服务器
    12. private void createZKInstance() throws IOException {
    13. // 创建 zk 实例
    14. zk = new ZooKeeper("127.0.0.1:2181", 15000, this.wh);
    15. }
    16. // 创建方法 ZKClose,用于关闭连接
    17. private void ZKClose() throws InterruptedException {
    18. // 关闭连接
    19. zk.close();
    20. }
    21. public static void main(String[] args) throws IOException, InterruptedException{
    22. // 调用 reateZKInstance 方法,连接 ZooKeeper 服务器
    23. reateZKInstance();
    24. // 调用 ZKClose 方法,关闭连接
    25. ZKClose();
    26. }
    27. }

    执行结果:

    WatchedEvent state:SyncConnected type:None path:null

    该结果是 Watcher 监视器返回的结果,各个属性代表的意思会在后续讲解。

    编程要求

    仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,实现客户端连接 ZooKeeper 服务器(需要实现 Watcher 监视)和断开的功能。

    1. import java.io.IOException;
    2. import org.apache.zookeeper.WatchedEvent;
    3. import org.apache.zookeeper.Watcher;
    4. import org.apache.zookeeper.ZooKeeper;
    5. public class test1 {
    6. // 初始化 ZooKeeper 实例
    7. private ZooKeeper zk;
    8. // 实现一个 Watcher
    9. // 请在此处编写代码
    10. /********* Begin *********/
    11. private Watcher wh = new Watcher() {
    12. public void process(WatchedEvent event) {
    13. System.out.println(event);
    14. }
    15. };
    16. /********* End *********/
    17. // 连接 ZooKeeper 服务器
    18. private void createZKInstance() throws IOException {
    19. // 请在此处编写代码
    20. /********* Begin *********/
    21. zk = new ZooKeeper("127.0.0.1:2181", 15000, this.wh);
    22. /********* End *********/
    23. }
    24. // 断开连接
    25. private void ZKClose() throws InterruptedException {
    26. // 请在此处编写代码
    27. /********* Begin *********/
    28. zk.close();
    29. /********* End *********/
    30. }
    31. public static void main(String[] args) throws IOException, InterruptedException{
    32. test1 test = new test1();
    33. // 连接 ZooKeeper 服务器
    34. test.createZKInstance();
    35. // 断开连接
    36. test.ZKClose();
    37. }
    38. }

  • 相关阅读:
    长沙仁基医疗,生产病毒采样管,猴痘试剂盒,A+B流感试剂盒,一拖五、一拖十
    4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】
    Zoho Creator推出全新的Canvas布局设计器功能
    求职面试、笔试 经验与准备流程
    Cesium-动态绘制面
    【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
    《MLB棒球创造营》:走近棒球运动·多伦多蓝鸟队
    Oracle连接工具PLSQL登录时提示初始化失败,无法锁定OCI.dll错误解决
    程序员福音,关于如何使用Markdown写出一份漂亮的简历 —— 程序员简历 | md文档简历制作教程
    CMake笔记
  • 原文地址:https://blog.csdn.net/qq_61604164/article/details/128083371