2016-11-30 10 views
2

Мы осуществляем переход от Zookeeper к Consul для управления динамической конфигурацией ключа. Мы используем OrbitzWorldwide client, и мы хотели бы использовать возможности своих часов для подписки на изменения с ключом. Однако мы не знаем, как это сделать.Наблюдение за изменениями на конкретном ключе в консуле с использованием консула-клиента OrbitzWorld

Zookeeper имеет встроенную поддержку часов. Например:

curator.getData() 
    .usingWatcher(watcher) 
    .forPath(path); 

В клиенте OrbitzWorldwide в есть объект KVCache который поддерживает слушатель, но один из требуемых параметров watchSeconds и это не ясно, что происходит, когда тайм-аут достигает? Должны ли мы снова подписаться?

Пример кода с использованием клиента OrbitzWorldwide в:

KVCache kvCache = KVCache.newCache(consul.keyValueClient(), path, watchSeconds); 
kvCache.addListener(new ConsulCache.Listener<String, Value>() { 
     public void notify(Map<String, Value> map) { 
      // Key changed 
     } 
}); 
kvCache.start(); 

Есть ли кто-нибудь здесь с опытом работы в этой библиотеке, что может сказать нам, как мы можем использовать его, чтобы следить за изменениями на ключ? Можете ли вы порекомендовать другого клиента с лучшей поддержкой часов?

ответ

2

Ну, после проверки с разработчиками на OrbitzWorldwide, клиент несет ответственность за повторное инициирование звонка один раз watchSeconds timeout достигает. Протестировано и работает, как ожидалось.

Часы основаны на blocking HTTP API консула, что означает, что вызов блокируется до тех пор, пока не будет изменен ключ или не истечет таймаут. Клиент OrbitzWorldwide будет обрабатывать эти блокирующие вызовы для нас.