RingServer を定期的に再検索する Provider
provider = Rinda::RingProvider.new(:Reload, DRbObject.new(reload), 'Reload')
entry = nil
loop do
begin
if entry
# 登録済みタプルを削除する
entry.renew(0)
end
# RingServer を再検索する
Rinda::RingFinger.finger.lookup_ring_any
entry = provider.provide
rescue DRb::DRbConnError, RuntimeError => e
# RingServer が見つからないときのエラーをキャッチ
entry = nil
puts e.message
end
sleep 60
endなんかいい方法ないかなぁ。これだと Renewer は意味がなくなる。(Renewer はサーバからのリクエストの答えるだけなので、サーバが動いてなければ意味をなさない。)
provide メソッドをオーバライドしてブロックするようにしてもいいかもしれない。