|
|
|
@ -14,21 +14,29 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
* @CONTACT 317758022@qq.com
|
|
|
|
|
* @DESC zk的curator客户端
|
|
|
|
|
*/
|
|
|
|
|
// 使用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;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|