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

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,所以可以覆盖此功能。