rubyでzookeeperを使うメモ
Gemfile
gem 'zk'
インストール
bundle
or
gem install zk
APIメモ
接続
zk = ZK.new("host:port,host:port,.../chroot")
ロック
locker = zk.locker('key_name')
begin
if ex_locker.lock!
# do something while holding lock
else
raise "Oh noes, we didn't get teh lock!"
end
ensure
locker.unlock!
end
or
zk.with_lock('key_name') do
end
etc
# node作成
zk.create(path, data, opts={})
# ephemeral mode
zk.create("/path", '', :ephemeral => true)
# => "/path"
# sequence & ephemeral
zk.create("/path", '', :sequence => true, :ephemeral => true)
# => "/path0"
# 取得
data, stat = zk.get(path, opts={})
# dataセット
zk.set(path, data, opts={})
# 存在確認
zk.exists?(path, opts={})
# 子nodeの取得
zk.children(path)
# => [ "a", "b" ]
# 削除
zk.delete("/path")
zk.delete("/path", :version => version)
# close
zk.close
zk.close! # pending中のイベントやthreadも強制終了
参考
https://github.com/zk-ruby/zk/blob/master/lib/zk/client/base.rb