Zookeeper .Net客户端代码
本来此客户端可以通过NuGet获取,如果会使用NuGet, 则可以使用命令Install-Package ZooKeeperNet(需要最新版本的NuGet)
如果不会,就去 NuGet官网了解http://docs.nuget.org/docs/start-here/using-the-package-manager-console
如果你想自己编译 你可以去GitHub下载源码https://github.com/ewhauser/zookeeper
donet编译时会报出Genrated里的文件无法打开,实际上刚开始是没有的;
最后在网上查了很多资料和源码里的说明文档
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\package.html
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\compiler\package.html,
原来是hadoop的Rcc(是用JAVA编写的 源文件中可以找到),这个东西作用是src下的zookeeper.jute文件转换为C C++ java的数据结构 好像原来是没有C#的,是后来作者加上的,这里就先不管了,可以用就行,接下来说说怎么生成 ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated的文件
我们需要运行ant命令
如果不知道ant,那google把
配置好ant 后 运行
ant -file build.xml

这样运行后等待build successfully 你的ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated就有文件了
现在就能将zookeeperNet编译为Dll了
我编译的时候发现有MiscUtil.dll不存在的警告 ,所以我还是去把这个dll下载了下来
注意这个客户端必须要用.NET4.0编译
以下整理过的donet的源文件包,大家参考使用
通过C#代码使用zookeeper
Zookeeper的使用主要是通过创建其Nuget ZooKeeperNet包下的Zookeeper实例,并且调用其接口方法进行
的,主要的操作就是对znode的增删改操作,监听znode的变化以及处理。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZooKeeperNet; namespace ZookeeperDemo
{
class Watcher : IWatcher
{
public void Process(WatchedEvent @event)
{
if (@event.Type == EventType.NodeDataChanged)
{
Console.WriteLine(@event.Path);
}
}
}
} using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZooKeeperNet; namespace ZookeeperDemo
{
class Program
{
static void Main(string[] args)
{ //创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,第二个参数为Session超时时间,第三个为节点变化时的回调方法
using (ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", new TimeSpan(, , , ), new Watcher()))
{
var stat = zk.Exists("/root",true); ////创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失)
//zk.Create("/root", "mydata".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //在root下面创建一个childone znode,数据为childone,不进行ACL权限控制,节点为永久性的
zk.Create("/root/childone", "childone".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
//取得/root节点下的子节点名称,返回List<String>
zk.GetChildren("/root", true);
//取得/root/childone节点下的数据,返回byte[]
zk.GetData("/root/childone", true, null); //修改节点/root/childone下的数据,第三个参数为版本,如果是-1,那会无视被修改的数据版本,直接改掉
zk.SetData("/root/childone", "childonemodify".GetBytes(), -);
//删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本
zk.Delete("/root/childone", -);
} }
}
}
本来此客户端可以通过NuGet获取,如果会使用NuGet, 则可以使用命令Install-Package ZooKeeperNet(需要最新版本的NuGet)
如果不会,就去 NuGet官网了解http://docs.nuget.org/docs/start-here/using-the-package-manager-console
如果你想自己编译 你可以去GitHub下载源码https://github.com/ewhauser/zookeeper
donet编译时会报出Genrated里的文件无法打开,实际上刚开始是没有的;
最后在网上查了很多资料和源码里的说明文档
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\package.html
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\compiler\package.html,
原来是hadoop的Rcc(是用JAVA编写的 源文件中可以找到),这个东西作用是src下的zookeeper.jute文件转换为C C++ java的数据结构 好像原来是没有C#的,是后来作者加上的,这里就先不管了,可以用就行,接下来说说怎么生成 ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated的文件
我们需要运行ant命令
如果不知道ant,那google把
配置好ant 后 运行
ant -file build.xml

这样运行后等待build successfully 你的ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated就有文件了
现在就能将zookeeperNet编译为Dll了
我编译的时候发现有MiscUtil.dll不存在的警告 ,所以我还是去把这个dll下载了下来
注意这个客户端必须要用.NET4.0编译
以下整理过的donet的源文件包,大家参考使用
通过C#代码使用zookeeper
Zookeeper的使用主要是通过创建其Nuget ZooKeeperNet包下的Zookeeper实例,并且调用其接口方法进行
的,主要的操作就是对znode的增删改操作,监听znode的变化以及处理。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ZooKeeperNet;
- namespace ZookeeperDemo
- {
- class Watcher : IWatcher
- {
- public void Process(WatchedEvent @event)
- {
- if (@event.Type == EventType.NodeDataChanged)
- {
- Console.WriteLine(@event.Path);
- }
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ZooKeeperNet;
- namespace ZookeeperDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- //创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,第二个参数为Session超时时间,第三个为节点变化时的回调方法
- using (ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 0, 50000), new Watcher()))
- {
- var stat = zk.Exists("/root",true);
- ////创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失)
- //zk.Create("/root", "mydata".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
- //在root下面创建一个childone znode,数据为childone,不进行ACL权限控制,节点为永久性的
- zk.Create("/root/childone", "childone".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
- //取得/root节点下的子节点名称,返回List<String>
- zk.GetChildren("/root", true);
- //取得/root/childone节点下的数据,返回byte[]
- zk.GetData("/root/childone", true, null);
- //修改节点/root/childone下的数据,第三个参数为版本,如果是-1,那会无视被修改的数据版本,直接改掉
- zk.SetData("/root/childone", "childonemodify".GetBytes(), -1);
- //删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本
- zk.Delete("/root/childone", -1);
- }
- }
- }
- }
Zookeeper .Net客户端代码的更多相关文章
- .NET Core)的ZooKeeper异步客户端
支持断线重连.永久watcher.递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端 阅读目录 什么是ZooKeeper? 项目介绍 提供的功能 使用说明 FAQ 在公司内部 ...
- zookeeper curator客户端之增删改查
zookeeper curator客户端之增删改查 zookeeper安装:https://www.cnblogs.com/zwcry/p/10272506.html curator客户端是Apach ...
- zookeeper实战:SingleWorker代码样例
我们需要一个“单点worker”系统,此系统来确保系统中定时任务在分布式环境中,任意时刻只有一个实例处于活跃:比如,生产环境中,有6台机器支撑一个应用,但是一个应用中有30个定时任务,这些任务有些必须 ...
- ZooKeeper单机客户端的启动流程源码阅读
客户端的启动流程 看上面的客户端启动的脚本图,可以看到,zookeeper客户端脚本运行的入口ZookeeperMain.java的main()方法, 关于这个类可以理解成它是程序启动的辅助类,由它提 ...
- Zookeeper(一)客户端
Zookeeper-客户端 例子: // org.apache.zookeeper.ZooKeeperMain public class ZooKeeperMain { public static v ...
- 基于Zookeeper实现客户端动态监听服务器上下线
一.在具体实现之前,先来了解一下Zookeeper的监听器的原理: 图中Main()线程作为客户端,当在主线程中创建Zookeeper客户端时,会默认创建两个子线程:Listener和connect, ...
- axis2生成客户端代码
通过aix2生成客户端代码需要准备相应的包,然后执行命令,步骤如下: 一.所需包准备 下载axis2-1.6.2-bin.zip,解压从lib包中取出 jaxrpc.jar wsdl4j-1.6.2. ...
- 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况
自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...
- 使用Myeclipse插件将wsdl生成java客户端代码
使用环境:MyEclipse9.0 本教程使用Myeclipse内置插件生成java代码,网上说这是xfire插件,不管怎样,生成和调用客户端代码都十分简单. 1.在项目上右键,选择New->O ...
随机推荐
- MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
列级约束:只针对某一个字段 表级约束:约束针对2个或2个以上的字段 约束类型是按功能来划分. 外键约束:保持数据一致性,完整性.实现数据表的一对一或一对多的关系.这就是把MySQL称为关系型数据库的根 ...
- tomcat优化和JVM修改内存
Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool&q ...
- 解决vmvare关闭过慢
打开虚拟机文件夹下的.vmx文件,将下面的内容添天加进去,保存prefvmx.minVmMemPct = "100" mainMem.useNamedFile = "FA ...
- AutoMapper.Mapper.CreateMap报“System.NullReferenceException: 未将对象引用设置到对象的实例。”异常复现
>>Agenda: >>Ⅰ.国庆假期问题出现 >>Ⅱ.双休日异常再次出现 >>Ⅲ.排障 >>Ⅳ.异常复盘 >>Ⅴ.修复后监测 & ...
- React-Native组件之Text内文字垂直居中方案
style: { height: 100, textAlign: 'center', textAlignVertical: 'center', } 以上方法在Android上显示水平垂直居中, 但在I ...
- Koa中设置中文Cookie值
默认情况下, 如果 ctx.cookies.set('user', '杨过', { domain: 'xxxx', path: 'xxxx', maxAge: 24 * 60 * 60 * 1000, ...
- java空心菱形
图 1 要输出如图1所示的菱形,第一反应是看看这个菱形有什么特点.在草稿纸上比划了半天,将图1转化成了图2用数字表示的图 图 2 比较图1和图2发现有以下特点: (1)图2中的每一个数字代表图1中每个 ...
- .NET Core Tools for Visual Studio 2015 安装失败
You may be blocked from installing the .NET Core Tooling Preview 2 for Visual Studio 2015 installer ...
- python 内置函数enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中.在python 3中返回一个生成器,代码如下: a ...
- Web3.js API 中文文档
Web3.js API 中文文档 http://web3.tryblockchain.org/Web3.js-api-refrence.html web3对象提供了所有方法. 示例: //初始化过程 ...