使用Ecplise操作ZooKeeper

本文介绍如何在Eclipse环境中配置和使用ZooKeeper。通过新建项目并引入Zookeeper的jar包,实现与ZooKeeper集群的连接。示例代码包括同步和异步创建节点的方法,详细步骤助你快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Ecplise操作ZooKeeper

在Ecplise中新建一个project,引入zookeeper文件的jar包。这些jar包在zookeeper解压文件夹下。



代码如下:

package zookeeper;

import java.io.IOException;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;

public class CreateSession implements Watcher {
	//声明zooKeeper
	private static ZooKeeper zooKeeper;
	public static void main(String[] args) throws IOException, InterruptedException {
		zooKeeper = new ZooKeeper("192.168.200.11", 5000, new CreateSession());	//建立连接
		System.out.println(zooKeeper.getState());	//连接状态
		Thread.sleep(Integer.MAX_VALUE);
	}
	
	private void doSomething() {
		System.out.println("这里做事情");
	}
	
	/**
	 * 通过事件去操作zookeeper
	 * 参数:event  事件对象
	 */
	@Override
	public void process(WatchedEvent event) {
		System.out.println("收到事件:" + event);
		if(event.getState() == KeeperState.SyncConnected) {
			doSomething();
		}
	}
	
}

控制台:


此时已经连接到zooKeeper集群。将所作的事情在doSomething中做。

比如创建节点:

    同步创建

    

控制台:

    

   异步创建

    


控制台:

    


完成代码:

package zookeeper;

import java.io.IOException;

import org.apache.zookeeper.AsyncCallback.StringCallback;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;

public class CreateSession implements Watcher {
	//声明zooKeeper
	private static ZooKeeper zooKeeper;
	public static void main(String[] args) throws IOException, InterruptedException {
		zooKeeper = new ZooKeeper("192.168.200.11", 5000, new CreateSession());	//建立连接
		System.out.println(zooKeeper.getState());	//连接状态
		Thread.sleep(Integer.MAX_VALUE);
	}
	
	private void doSomething() {
		try {
			//同步创建
			//参数依次是:节点路径,节点的数据信息,权限信息,创建模式(临时或者持久)
			String path = zooKeeper.create("/node_4", "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
			System.out.println("return path:"+path);
			//异步调用
			//参数依次是:节点路径,节点的数据信息,权限信息,创建模式(临时或者持久)
			zooKeeper.create("/node_6", "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL,new IStringCallback(),"创建");
		} catch (KeeperException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 通过事件去操作zookeeper
	 * 参数:event  事件对象
	 */
	@Override
	public void process(WatchedEvent event) {
		System.out.println("收到事件:" + event);
		if(event.getState() == KeeperState.SyncConnected) {
			doSomething();
		}
	}
	
	//异步调用的回调函数接口实现
	static class IStringCallback implements StringCallback{
		
		
		/**
		 * 异步调用的回调函数
		 * 参数依次:返回码(调用成功返回0),需要创建的节点路径,异步调用上下文,返回的真实路径
		 */
		@Override
		public void processResult(int rc, String path, Object ctx, String name) {
			StringBuilder sb = new StringBuilder();
			sb.append("rc="+rc).append("\n");
			sb.append("path="+path).append("\n");
			sb.append("ctx=0+ctx").append("\n");
			sb.append("name="+name).append("\n");
			System.out.println(sb.toString());
		}
		
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值