zk
v1.1.1
Published
Zookeeper client library for Node
Downloads
26
Readme
Zk
Zk is a promised based Zookeeper client library for Node. It uses the fork of C binding from node-zookeeper and makes it easier to use.
The following methods are implemented:
get
set
create
exists
delete
getChildren
getChildren2
Install
$ npm install zk
Connection
var Zookeeper = require('zk')
var zk = new Zookeeper()
zk.connect().then(function() {
// zk.create(), zk.set()...
})
Basics
zk.create('/test-node-', 'value', Zookeeper.ZOO_SEQUENCE | Zookeeper.ZOO_EPHEMERAL).then(function(_path) {
// _path is created node path
})
return zk.set(path, 'value2', -1).then(function(){
zk.get(path).then(function(reply){
// reply.stat is node stat object
// reply.data is node value (Buffer) -> reply.data.toString() will be 'value2'
})
})
Watches
Watches are implemented as promises conditionaly returned with results:
get
without watch:
zk.get(path).then(function(reply) {
// reply.stat is node stats
// reply.data is node value (buffer)
})
get
with watch:
return zk.get(path, true).then(function(reply) {
// reply.stat, reply.data as above
// reply.watch is a promise
return reply.watch.then(function(event){
// event.type: 'child' | 'changed' | 'deleted' ..
// event.state
// event.path
})
})
See tests for more
Locks
var Zookeeper = require('zk')
var Lock = Zookeeper.Lock
var zk = new Zookeeper()
// zk.connect() ...
var lock = new Lock(zk, 'lockName')
var promise = lock.lock(function(){
// we got the lock!
// ... do something and return a promise
})
Function passed to lock()
should return a promise. That promise will be the return value of lock()
call