Spring Cloud Zookeeper 相依性監看器
相依性監看器機制讓您能註冊監聽器來監聽您的相依性。此功能實際上是觀察者模式的實作。當相依性變更時,其狀態(變為 UP 或 DOWN),可以套用一些自訂邏輯。
註冊監聽器
若要註冊監聽器,您必須實作名為 org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener
的介面,並將其註冊為 bean。此介面提供一個方法
void stateChanged(String dependencyName, DependencyState newState);
如果您想為特定相依性註冊監聽器,dependencyName
將會是您具體實作的鑑別器。newState
提供您關於相依性是否已變更為 CONNECTED
或 DISCONNECTED
的資訊。
使用存在檢查器
與相依性監看器綁定的是名為存在檢查器的功能。它讓您在應用程式啟動時提供自訂行為,以根據您的相依性狀態做出反應。
抽象類別 org.springframework.cloud.zookeeper.discovery.watcher.presence.DependencyPresenceOnStartupVerifier
的預設實作是 org.springframework.cloud.zookeeper.discovery.watcher.presence.DefaultDependencyPresenceOnStartupVerifier
,其運作方式如下。
-
如果相依性標記為
required
且不在 Zookeeper 中,當您的應用程式啟動時,它會拋出例外並關閉。 -
如果相依性未標記為
required
,則org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker
會記錄相依性遺失,層級為WARN
。
由於 DefaultDependencyPresenceOnStartupVerifier
僅在沒有 DependencyPresenceOnStartupVerifier
類型的 bean 時註冊,因此此功能可以被覆寫。