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将为您提供有关您的依赖项是否已更改为CONNECTEDDISCONNECTED的信息。

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