77. Spring Cloud Zookeeper 依赖观察者
Dependency Watcher 机制允许您将 listeners 注册到依赖项。事实上,该功能是Observator
pattern 的 implementation。当依赖项更改时,其 state(向上或向下)可以应用某些自定义逻辑。
77.1 激活
Spring Cloud Zookeeper 需要启用依赖关系功能才能使用 Dependency Watcher 机制。
77.2 注册 Listener
要注册 listener,必须实现一个名为org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener
的接口并将其注册为 bean。界面为您提供了一种方法:
void stateChanged(String dependencyName, DependencyState newState);
如果要为特定依赖项注册 listener,dependencyName
将是具体 implementation 的鉴别器。 newState
为您提供有关您的依赖项是否已更改为CONNECTED
或DISCONNECTED
的信息。
77.3 使用 Presence Checker
与 Dependency Watcher 绑定的是名为 Presence Checker 的功能。它允许您在 application 引导时提供自定义行为,以根据依赖项的 state 做出反应。
abstract org.springframework.cloud.zookeeper.discovery.watcher.presence.DependencyPresenceOnStartupVerifier
class 的默认 implementation 是org.springframework.cloud.zookeeper.discovery.watcher.presence.DefaultDependencyPresenceOnStartupVerifier
,它按以下方式工作。
-
如果依赖项标记为且不在 Zookeeper 中,则当 application 启动时,它会抛出 exception 并关闭。
-
如果依赖项不是
required
,那么org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker
会记录WARN
level 中缺少依赖项的情况。
因为仅在没有DependencyPresenceOnStartupVerifier
类型的 bean 时才注册DefaultDependencyPresenceOnStartupVerifier
,所以可以覆盖此功能。