CuratorFramework的CRUD开始的操作
create(): 开始创建,之间一大堆方法,最后是forPath()
delete()
checkExist()
getData():kotlin简化了,getData是data
setData()
getChildren()
val client = createSimple()
client.start()
client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.EPHEMERAL)
.forPath("/master", "test".toByteArray())
client.data
.storingStatIn(Stat())
.forPath("/master")
println(String(s))
client.setData()
.withVersion(-1)
.forPath("/master","sasa".toByteArray())
client.delete()
//保证能删除成功
.guaranteed()
.deletingChildrenIfNeeded()
.withVersion(-1)
.forPath("/master")
client.getChildren().
.watched()
.forPath()
client.close()
后台操作和监听器
事件状态有:CREATE, DELETE, EXISTS, GET_DATA, SET_DATA, CHILDREN, SYNC, GET_ACL, WATCHED, CLOSING
状态码有:0(OK), -4(ConnectionLoss), -110(NodeExists), -112(SessionExpired)
![这里写图片描述](https://img-blog.csdn.net/20171003190601235?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3d0MDQyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
参数有个executor, 指可以自己传一个线程池进去执行后台任务。
val lock = CountDownLatch(1)
val client = createSimple()
client.start()
//注册一个全局的监听器
client.curatorListenable.addListener(CuratorListener { client, event ->
println(event.type)
})
client.create()
.withMode(CreateMode.EPHEMERAL)
//注册一个单次注册器
.inBackground( { client, event ->
println(event.type.toString()+"asasa")
lock.countDown()
})
.forPath("/master","sassasa".toByteArray())
lock.await()
client.close()
事务
client.inTransaction()
.create()
.withMode(CreateMode.EPHEMERAL)
.forPath("/master","aaaaa".toByteArray())
.and()
.setData()
.forPath("/master","asdasd".toByteArray())
.and()
.commit()