Spring Cloud Zookeeper Dependency Watcher
Dependency Watcher 机制允许你为依赖项注册监听器。实际上,该功能是 Observer
模式的一种实现。当依赖项发生变化时,即其状态变为 UP 或 DOWN 时,可以应用一些自定义逻辑。
Registering a Listener
要注册一个监听器,你必须实现一个名为`org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener`的接口并将其注册为一个 Bean。此接口提供一个方法:
void stateChanged(String dependencyName, DependencyState newState);
如果你想为特定依赖项注册一个监听器,dependencyName
将作为你的具体实现的辨别符。newState
会告知你的依赖项是变为 CONNECTED
还是 DISCONNECTED
。
Using the Presence Checker
与 Dependency Watcher 绑定在一起的功能称为 Presence Checker。它允许你提供自定义行为,以便在应用程序启动时根据依赖项的状态采取相应措施。
抽象`org.springframework.cloud.zookeeper.discovery.watcher.presence.DependencyPresenceOnStartupVerifier` 类的默认实现是`org.springframework.cloud.zookeeper.discovery.watcher.presence.DefaultDependencyPresenceOnStartupVerifier`,其工作方式如下。
-
如果依赖项被标记 us
required
,且不在 Zookeeper 中,当您的应用程序启动时,将引发异常并关闭。 -
如果依赖项不是
required
,则`org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker`日志在WARN
级别记录依赖项丢失。
由于只有在没有类型为 DependencyPresenceOnStartupVerifier
的 Bean 时才注册 DefaultDependencyPresenceOnStartupVerifier
,因此可以覆盖此功能。