【问题标题】:When CuratorFramework's methods start and close shoud be called?什么时候应该调用 CuratorFramework 方法启动和关闭?
【发布时间】:2013-12-21 12:00:40
【问题描述】:

根据documentation

CuratorFramework 实例是完全线程安全的。你应该分享一个 应用程序中每个 ZooKeeper 集群的 CuratorFramework。

它还声明方法start 应该在执行任何其他操作之前被调用。这个方法应该在每次操作之前调用还是在初始化之后调用一次就够了?

【问题讨论】:

    标签: java apache-zookeeper apache-curator


    【解决方案1】:

    初始测试表明,start 每个创建的客户端只应调用一次。多次调用它会导致 IllegalStateException

    【讨论】:

      【解决方案2】:

      创建 CuratorFramework 实例后调用 start 一次。所以,启动是:

      • 通过一种工厂方法创建 CuratorFramework
      • 在实例上调用 start()
      • 根据需要使用单个 CuratorFramework 实例运行您的应用程序
      • 在应用程序结束时,对实例调用 close()

      注意:我是策展人的主要作者

      【讨论】:

      • 如果你正在使用 .usingNamespace(),那么你不能 close() 实例——你会得到一个 java.lang.UnsupportedOperationException org.apache.curator.framework.imps.NamespaceFacade。关闭(NamespaceFacade.java:70)。有解决办法吗?
      • @Randgalt - 在我的应用程序中,我注意到人们有一个逻辑来在每次调用中创建 CuratorFramework 并关闭它(最终)。我还记得 CuratorFramework 不应该多次重新创建。创建 CuratorFramework 并快速连续关闭会导致 ZK 的连接泄漏,因为它在内部启动 ExecutorService ,如果快速完成可能无法中断?
      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2021-07-13
      • 2014-03-21
      • 2018-03-07
      • 1970-01-01
      相关资源
      最近更新 更多