CuratorFrameworkFactory.builder()方法可以配置以下属性:
1. connectString:ZooKeeper服务器的连接字符串。
2. sessionTimeoutMs:ZooKeeper会话超时时间。
3. connectionTimeoutMs:ZooKeeper连接超时时间。
4. retryPolicy:Curator重试策略。
5. namespace:命名空间。
6. aclProvider:ACL提供程序。
7. authorization:授权信息。
8. compressionProvider:压缩提供程序。
9. threadFactory:线程工厂。
10. canBeReadOnly:是否允许客户端在ZooKeeper集群中的所有节点不可用时进入只读模式。
详情:
CuratorFrameworkFactory.builder()方法可以配置以下属性:
-
connectString:ZooKeeper服务的连接字符串,格式为"host1:port1,host2:port2,…",多个节点用逗号分隔。
-
sessionTimeoutMs:会话超时时间,单位为毫秒。
-
connectionTimeoutMs:连接超时时间,单位为毫秒。
-
retryPolicy:重试策略,用于处理连接失败或会话过期等异常情况。常用的重试策略有:
- ExponentialBackoffRetry:指数退避重试策略,每次重试的时间间隔会越来越长。示例代码:
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
- RetryNTimes:指定重试次数的重试策略。示例代码:
RetryPolicy retryPolicy = new RetryNTimes(3, 1000);
- RetryOneTime:只重试一次的重试策略。示例代码:
RetryPolicy retryPolicy = new RetryOneTime(1000);
- namespace:命名空间,用于在ZooKeeper上创建一个隔离的节点。示例代码:
String namespace = "myapp";
- aclProvider:ACL提供者,用于设置ZooKeeper节点的访问控制列表(ACL)。示例代码:
ACLProvider aclProvider = new DefaultACLProvider();
- authorization:授权信息,用于在连接时进行认证。示例代码:
String authorization = "username:password";
- threadFactory:线程工厂,用于创建线程。示例代码:
ThreadFactory threadFactory = Executors.defaultThreadFactory();
完整示例代码:
String connectString = "localhost:2181";
int sessionTimeoutMs = 5000;
int connectionTimeoutMs = 5000;
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
String namespace = "myapp";
ACLProvider aclProvider = new DefaultACLProvider();
String authorization = "username:password";
ThreadFactory threadFactory = Executors.defaultThreadFactory();CuratorFramework client = CuratorFrameworkFactory.builder().connectString(connectString).sessionTimeoutMs(sessionTimeoutMs).connectionTimeoutMs(connectionTimeoutMs).retryPolicy(retryPolicy).namespace(namespace).aclProvider(aclProvider).authorization(authorization.getBytes()).threadFactory(threadFactory).build();