推送通知和 Spring Cloud Bus

許多原始碼倉庫提供商(例如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)透過 webhook 通知你倉庫中的變化。你可以透過提供商的使用者介面配置 webhook 的 URL 和感興趣的事件集合。例如,Github 會向 webhook 傳送一個 POST 請求,其 JSON 主體包含提交列表,並且頭部(X-Github-Event)設定為 push。如果你新增對 spring-cloud-config-monitor 庫的依賴並在 Config Server 中啟用 Spring Cloud Bus,那麼 /monitor 端點將被啟用。

當 webhook 被啟用時,Config Server 會發送一個 RefreshRemoteApplicationEvent,該事件針對其認為可能發生變化的應用程式。變化檢測是可以進行策略化的。然而,預設情況下,它會查詢與應用程式名稱匹配的檔案中的變化(例如,foo.properties 針對 foo 應用程式,而 application.properties 針對所有應用程式)。當你想要覆蓋此行為時使用的策略是 PropertyPathNotificationExtractor,它接受請求頭和請求體作為引數,並返回一個包含發生變化的檔案路徑列表。

預設配置可直接與 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket 配合使用。除了來自 Github、Gitlab、Gitee 或 Bitbucket 的 JSON 通知外,你還可以透過向 /monitor 傳送一個 POST 請求並帶有 path={application} 模式的表單編碼主體引數來觸發變化通知。這樣做會將廣播發送到匹配 {application} 模式的應用程式(該模式可以包含萬用字元)。

只有在 Config Server 和客戶端應用程式中都激活了 spring-cloud-bus 時,才會傳輸 RefreshRemoteApplicationEvent
預設配置還會檢測本地 git 倉庫中的檔案系統變化。在這種情況下,webhook 不會被使用。然而,只要你編輯一個配置檔案,就會廣播一次重新整理。