基於Curator操作ZooKeeper(三)-Curator整合Spring
阿新 • • 發佈:2018-11-10
Java原生API操作ZooKeeper可參看:
相關內容:
基於Curator操作ZooKeeper(二)-Watcher操作-補充TreeCache
基於Curator操作ZooKeeper(二)-Watcher操作
Curator整合Spring和Spring Boot方式都是差不多的。
在Spring專案中引入依賴:
<!-- <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.11</version> </dependency> --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.0</version> </dependency>
增加applicationContext-xx.xml檔案:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <description>ZK與Spring整合,啟動專案時建立與ZK的連線</description> <!--ZK重試策略--> <bean id="retryPolicy" class="org.apache.curator.retry.RetryNTimes"> <!--重試次數--> <constructor-arg index="0" value="10"/> <!--每次間隔ms--> <constructor-arg index="1" value="5000"/> </bean> <!--ZK客戶端--> <bean id="client" class="org.apache.curator.framework.CuratorFrameworkFactory" factory-method="newClient" init-method="start"> <!--ZK服務地址,叢集使用逗號分隔--> <constructor-arg index="0" value="192.168.220.136,192.168.220.137"/> <!--session timeout會話超時時間--> <constructor-arg index="1" value="10000"/> <!--ConnectionTimeoutMs建立連線超時時間--> <constructor-arg index="2" value="5000"/> <!--重試策略--> <constructor-arg index="3" ref="retryPolicy"/> </bean> <!--擴充套件注入ZK工具--> <bean id="zkCurator" class="dongguabai.ZKCurator" init-method="init"> <constructor-arg index="0" ref="client"/> </bean> </beans>
ZK客戶端:
package dongguabai; import org.apache.curator.framework.CuratorFramework; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Dongguabai * @date 2018/10/18 15:12 */ public class ZKCurator { private static final Logger LOGGER = LoggerFactory.getLogger(ZKCurator.class); //ZK客戶端 private CuratorFramework client = null; public ZKCurator(CuratorFramework client) { this.client = client; } /** * 初始化操作 */ public void init(){ //使用名稱空間 client = client.usingNamespace("testDgb"); } /** * 判斷ZK是否連線 * @return */ public boolean isZKAlive(){ return client!=null && client.isStarted(); } }
測試:
import dongguabai.ZKCurator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 兩景Controller
* @author Dongguabai
* @date 2018/10/9 16:35
*/
@RestController
@RequestMapping("twoScenes")
public class ZJTwoScenesController extends BaseController{
//todo 預留的兩景Controller
@Autowired
private ZKCurator zkCurator;
@RequestMapping("/check")
public Object check(){
return ResultHelper.success(zkCurator.isZKAlive()?"已連線":"斷開");
}
}