Spring Cloud Zookeeper Dependency Watcher

Dependency Watcher 机制允许你为依赖项注册监听器。实际上,该功能是 Observer 模式的一种实现。当依赖项发生变化时,即其状态变为 UP 或 DOWN 时,可以应用一些自定义逻辑。

Activating

必须启用 Spring Cloud Zookeeper Dependencies 功能,才能使用 Dependency Watcher 机制。

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`,其工作方式如下。

  1. 如果依赖项被标记 us required,且不在 Zookeeper 中,当您的应用程序启动时,将引发异常并关闭。

  2. 如果依赖项不是 required,则`org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker`日志在 WARN 级别记录依赖项丢失。

由于只有在没有类型为 DependencyPresenceOnStartupVerifier 的 Bean 时才注册 DefaultDependencyPresenceOnStartupVerifier,因此可以覆盖此功能。