pull/4/head
zhouyu 9 months ago
parent cb7a3b15bf
commit db1c675115

@ -14,21 +14,29 @@ import org.springframework.stereotype.Component;
* @CONTACT 317758022@qq.com
* @DESC zkcurator
*/
// 使用Spring框架的@Component注解将这个类标记为一个组件意味着该类会被Spring容器进行管理能够参与到依赖注入等Spring相关的功能中方便在其他需要使用此类实例的地方通过自动注入等方式获取实例实现不同组件之间的协作。
@Component
public class ZkClient {
// 通过Spring的依赖注入机制使用@Autowired注解自动注入Parameters类型的实例Parameters类应该是用于存储系统相关配置参数的类在这里主要是期望从中获取与Zookeeper连接相关的配置参数例如Zookeeper服务器的主机地址等信息以便后续构建Zookeeper客户端连接时使用。
@Autowired
private Parameters parameters;
// 使用Spring的@Bean注解该注解用于告诉Spring容器这个方法会返回一个对象这个对象会被Spring管理并注册到容器中其他组件可以通过依赖注入的方式获取这个对象在这里就是用于创建并返回一个CuratorFramework类型的Zookeeper客户端对象方便在整个应用中使用该客户端与Zookeeper服务器进行交互。
@Bean
public CuratorFramework getZkClient(){
CuratorFrameworkFactory.Builder builder= CuratorFrameworkFactory.builder()
public CuratorFramework getZkClient() {
// 使用CuratorFrameworkFactory的builder方法创建一个构建器对象CuratorFramework是用于操作Zookeeper的客户端框架通过构建器模式可以方便地配置客户端的各种参数如连接字符串、连接超时时间、重试策略等后续再基于这个构建器来构建出最终的客户端实例。
CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder()
// 通过调用构建器的connectString方法传入从Parameters实例中获取的Zookeeper主机地址parameters.getZkHost()来设置要连接的Zookeeper服务器的地址信息这样客户端就能知道要连接到哪台Zookeeper服务器上。
.connectString(parameters.getZkHost())
// 通过调用构建器的connectionTimeoutMs方法设置连接超时时间为3000毫秒即如果在3秒内无法建立与Zookeeper服务器的连接则认为连接超时会触发相应的超时处理逻辑避免长时间等待导致程序阻塞等问题。
.connectionTimeoutMs(3000)
// 通过调用构建器的retryPolicy方法设置重试策略为RetryNTimes类型这里传入参数5和10表示当连接Zookeeper服务器出现问题时会尝试重试5次每次重试的间隔时间为10毫秒通过这种重试机制来增加连接成功的概率应对可能出现的临时性网络问题等情况。
.retryPolicy(new RetryNTimes(5, 10));
// 使用构建器的build方法构建出CuratorFramework类型的Zookeeper客户端对象这个对象封装了与Zookeeper服务器交互的各种功能例如创建节点、读取节点数据、监听节点变化等操作都可以通过这个客户端对象来实现。
CuratorFramework framework = builder.build();
// 调用构建好的Zookeeper客户端对象的start方法来启动客户端启动后客户端就会尝试按照配置的参数去连接Zookeeper服务器开始建立连接并准备进行后续的交互操作只有启动后客户端才能正常使用。
framework.start();
// 将启动后的Zookeeper客户端对象返回这样Spring容器就会将这个对象管理起来其他需要与Zookeeper进行交互的组件可以通过依赖注入的方式获取这个客户端对象进而使用其功能来操作Zookeeper。
return framework;
}
}

Loading…
Cancel
Save