73. Spring Cloud Zookeeper 依赖观察者
Dependency Watcher 机制允许您将 listeners 注册到依赖项。该功能实际上是Observator
pattern 的 implementation。当依赖项更改其 state(UP 或 DOWN)时,可以应用某些自定义逻辑。
73.1 如何激活
需要启用 Spring Cloud Zookeeper 依赖项功能,以便从 Dependency Watcher 机制中获益。
73.2 注册 listener
在 order 中注册一个 listener,你必须实现一个接口org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener
并将其注册为 bean。界面为您提供了一种方法:
void stateChanged(String dependencyName, DependencyState newState);
如果要为特定依赖项注册 listener,那么dependencyName
将是具体 implementation 的鉴别器。 newState
将为您提供有关您的依赖项是否已更改为CONNECTED
或DISCONNECTED
的信息。
73.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
,它按以下方式工作。
-
如果依赖项被标记为
required
并且它不在 Zookeeper 中,那么在启动时,application 将抛出 exception 并关闭 -
如果依赖不是
required
将 log
可以覆盖该功能,因为只有在没有 bean 时才会注册DefaultDependencyPresenceOnStartupVerifier
。