Curator 异步获取结果
原声的ZooKeeper 的CRUD API有同步和异步之分,对于异步API,需要传递AsyncCallback回调。对于getData,getChildren,exists这三个API,还可以设置Watcher。这些功能在Curator中是如何实现的?
在Curator中,可以通过如下三种方式来异步获取结果:
1.inBackground()+CuratorListener
2.inBackground(new BackgroundCallback(){ public void processResult(CuratorFramework client,CuratorEvent event){}})
3.inBackground(newBackgroundCallback(){},Executor)
以inBackground()+CuratorListener这种方式来使用异步API,如下:
client.getCuratorListenable().addListener(new CuratorListener(){
@Override
public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
// TODO Auto-generated method stub
if(event.getType()==CuratorEventType.CREATE){
System.out.println("create path="+event.getPath()+",code="+event.getResultCode());
}else if(event.getType()==CuratorEventType.GET_DATA){
System.out.println("get path="+event.getPath()+",data="+new String(event.getData()));
}else if(event.getType()==CuratorEventType.SET_DATA){
System.out.println("set path="+event.getPath()+",data="+new String(client.getData().forPath(event.getPath()))/*+",data="+new String(event.getData())*/);
}else if(event.getType()==CuratorEventType.DELETE){
System.out.println("delete path="+event.getPath());
}
}});
接下来client的所有以inBackground()方式使用的API,其异步处理结果都是通过这个CuratorListener来处理。
在第二中方式inBackground(BackgroundCallback)中,如下:
client.create()
.creatingParentsIfNeeded()
.withProtection()
.withMode(CreateMode.EPHEMERAL)
.inBackground(new BackgroundCallback(){ @Override
public void processResult(CuratorFramework client, CuratorEvent event) throws Exception {
// TODO Auto-generated method stub
if(event.getType()==CuratorEventType.CREATE){
System.out.println("code:"+event.getResultCode()+"path:"+event.getPath()); //client.getData().inBackground().forPath(event.getPath());
}
}
} )
.forPath("/francis/tmp/a","wbs".getBytes());
Curator 异步获取结果的更多相关文章
- jquery的异步获取返回值为中文时乱码解决方法
用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码. 服务器端已经编码过了(UTF-8编码).开始一 ...
- 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)
安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图 ...
- 如何解决设置Session保存在StateServer后引起WebService/WebMethod无法异步获取Session
项目中有一个文件上传功能,需要显示文件上传进度.于是使用PageMethods 调用WebService/WebMethod . 在demo中测试一切正常.但是转移到项目中之后无法异步刷新文件上传进度 ...
- Swift - 异步获取网络数据封装类
使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpContr ...
- nettyclient异步获取数据
源代码见,以下主要是做个重要代码记录 http://download.csdn.net/detail/json20080301/8180351 NETTYclient获取数据採用的方式是异步获取数据, ...
- Vue父组件传递异步获取的数据给子组件
问题场景: 当父组件传给子组件的数据是在父组件中异步获取的时候,如何让子组件获取期望的值? 在父组件中: 首先在data()中定义data_detail为空: data(){ data_detail: ...
- 用redux-thunk异步获取数据
概述 最近学习redux,打算用redux-thunk给todo添加异步获取数据组件.记录下来,供以后开发时参考,相信对其他人也有用. 注意: 在todo下方,我异步获取我的react博客的标题,点击 ...
- Python: PySide(Qt)异步获取网页源码
学习PyQt UI编程笔记.相对PyQt来说,PySide资料为少. 此篇记录异步获取代码后,同步显示于界面窗体中,涉及线程网步,此为知识点. 直录代码: # encoding: utf-8 from ...
- easyui panel异步获取后台数据在前台显示
我在使用easyui的时候,想做一个向下图所示的效果,这个panel的样式已经做好了,想从后台异步获取json数据,然后填入到文本框中,不知道哪位大神能给点指导?万分感谢! 放入表单中,使用form对 ...
随机推荐
- 一对一还是一对多? MVP设计前提
设计MVP之前,先要确定好以下模块之间是一对多还是一对一的关系: View ---> Presenter --> Model --> Interface(URL) 就是一个View只 ...
- ifram-locatione页面跳转
在涉及银行页面时,需要跳转到银行页面var accound = document.getElemntById('accound');$.ajax({ dataType:'json', type:'po ...
- 一次erlang 节点CPU严重波动排查
新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增 ...
- Debian-based Linux distributions 安装 virtualbox
Add the following line to your /etc/apt/sources.list: deb http://download.virtualbox.org/virtualbox/ ...
- Python之mmap内存映射模块(大文本处理)说明
背景: 通常在UNIX下面处理文本文件的方法是sed.awk等shell命令,对于处理大文件受CPU,IO等因素影响,对服务器也有一定的压力.关于sed的说明可以看了解sed的工作原理,本文将介绍通过 ...
- yii小细节
1.main.php增加导航栏严格区分大小写,否则会出现404错误 2.增加'分页'功能---前后台的models里面的search.php 添加 public function search($pa ...
- marquee实现文字移动效果;js+div实现文字无缝移动效果
1.marquee实现文字移动: <marquee width="220px;" scrollamount="5" onmouseover="t ...
- MySQL 5.7 安装教程
自序:最近又要重新用上Mysql,在有道笔记找了以前自己记录怎么安装mysql5.7的笔记,发现那个时候记得笔记比较随意,看的比较费劲,现在决定重新在博客记录一下,以便以后自己查阅的时候更加方便. 1 ...
- Java 中使用javah编译头文件出现找不到类的情况
在工程的bin目录下,输入命令: javah -classpath . -jni 类路径.JNI类
- JSON resource 启示
好久没写博客了,刚走完20000步,不废话了,先吐为快. 上面的en-us.json 是一个简单得不能再简单的json对象,当你写下"key-2": "duplicate ...