zoukankan      html  css  js  c++  java
  • zookeeper持有者类

     1 import org.apache.curator.RetryPolicy;
     2 import org.apache.curator.framework.CuratorFramework;
     3 import org.apache.curator.framework.CuratorFrameworkFactory;
     4 import org.apache.curator.framework.imps.CuratorFrameworkState;
     5 import org.apache.curator.retry.ExponentialBackoffRetry;
     6 import org.slf4j.Logger;
     7 import org.slf4j.LoggerFactory;
     8 
     9 import java.io.Closeable;
    10 import java.io.IOException;
    11 
    12 /**
    13  * zookeeper连接持有者
    14  *
    15  * @author
    16  * @version V1.0
    17  * @modify by user: $author$ $date$
    18  * @modify by reason:{方法名}:{原因}
    19  */
    20 public class ZookeeperHolder implements Closeable {
    21     // /日志
    22     private static final Logger LOG = LoggerFactory.getLogger(ZookeeperHolder.class);
    23     // zk超时时间
    24     private static final int SESSION_TIME = 30 * 1000;
    25     //出错尝试次数
    26     private static final int RETRY_TIMES = 3;
    27     private CuratorFramework client;
    28     private String zkUrl = null;
    29 
    30     public ZookeeperHolder(String zkUrl) {
    31         this.zkUrl = zkUrl;
    32         client = initClient(zkUrl);
    33     }
    34 
    35     public CuratorFramework getClient() {
    36         if (client == null) {
    37             client = initClient(zkUrl);
    38         }else if (!client.getState().equals(CuratorFrameworkState.STARTED)) {
    39             client.start();
    40         }
    41         return client;
    42     }
    43 
    44     /**
    45      * 初始化客户端
    46      *
    47      * @param zkUrl
    48      * @return
    49      */
    50     private CuratorFramework initClient(String zkUrl) {
    51         LOG.info("初始化Zookeeper连接...");
    52         try {
    53             RetryPolicy retryPolicy = new ExponentialBackoffRetry(SESSION_TIME, RETRY_TIMES);
    54             CuratorFramework client = CuratorFrameworkFactory.newClient(zkUrl, retryPolicy);
    55             client.start();
    56             return client;
    57         } catch (Throwable e) {
    58             LOG.error("Init zk client error with url [{}]", zkUrl, e);
    59             throw e;
    60         }
    61     }
    62 
    63     @Override
    64     protected void finalize() throws Throwable {
    65         if (client != null) {
    66             client.close();
    67         }
    68         super.finalize();
    69     }
    70 
    71     @Override
    72     public void close() throws IOException {
    73         if (client != null) {
    74             client.close();
    75         }
    76     }
    77 }
  • 相关阅读:
    springboot之异步调用@Async
    springboot之约定大约配置
    springboot之定时任务@Scheduled
    百度地图API
    JS触发服务器控件的单击事件
    jquery复选框 选中事件 及其判断是否被选中
    NopCommerce源码架构详解--初识高性能的开源商城系统cms
    基于dapper的通用泛型分页
    基于JQuery 的消息提示框效果代码
    kindeditor支持flv视频播放方法
  • 原文地址:https://www.cnblogs.com/jinniezheng/p/6384026.html
Copyright © 2011-2022 走看看