7. Spring Cloud Zookeeper Dependency Watcher

依赖监视器机制允许你注册到你的依赖项的监听器。实际上,该功能是 Observator 模式的实现。当一个依赖项发生变化时,其状态(变为 UP 或 DOWN),一些自定义逻辑可以应用。spring-doc.cadn.net.cn

7.1. 激活

Spring Cloud Zookeeper 依赖功能需要启用,才能使用依赖监视器机制。spring-doc.cadn.net.cn

7.2. 注册监听器

要注册一个监听器,必须实现一个名为 org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener 的接口并 将其注册为一个 bean。该接口提供一个方法:spring-doc.cadn.net.cn

void stateChanged(String dependencyName, DependencyState newState);

如果你想要为某个依赖注册一个监听器,你的具体实现使用的 dependencyName 将会是你的鉴别器。 newState 会为你提供信息,告诉你你的依赖是否已更改到 CONNECTEDDISCONNECTEDspring-doc.cadn.net.cn

7.3. 使用存在性检查器

与依赖监视器绑定的功能是称为存在检查器。它让你在应用程序启动时提供自定义行为,以根据依赖项的状态作出反应。spring-doc.cadn.net.cn

抽象类 org.springframework.cloud.zookeeper.discovery.watcher.presence.DependencyPresenceOnStartupVerifier 的默认实现是 org.springframework.cloud.zookeeper.discovery.watcher.presence.DefaultDependencyPresenceOnStartupVerifier, 其工作方式如下。spring-doc.cadn.net.cn

  1. 如果依赖被标记为 required 且不在 Zookeeper 中,当您的应用程序启动时,会抛出异常并关闭。spring-doc.cadn.net.cn

  2. 如果依赖项不是 required,则 org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker 会记录在 WARN 层级缺少该依赖项。spring-doc.cadn.net.cn

因为当没有类型为DependencyPresenceOnStartupVerifier的bean时,DefaultDependencyPresenceOnStartupVerifier才会被注册,此功能可以被覆盖。spring-doc.cadn.net.cn