共计 903 个字符,预计需要花费 3 分钟才能阅读完成。
推送通知和 Spring Cloud Bus
许多源代码存储库提供程序(例如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)通过 webhook 通知你存储库中的更改,你可以通过提供程序的用户界面将 webhook 配置为 URL 以及你感兴趣的一组事件。例如,Github 使用 POST 到 webhook,其中包含一个 JSON 体,其中包含一个提交列表和一个 header(X-Github-Event)设置为 push,如果添加了对 spring-cloud-config-monitor 库的依赖并在 Config Server 中激活 Spring Cloud Bus,则会启用 /monitor 端点。
激活 webhook 后,Config Server 会针对它认为可能已更改的应用程序发送一个 RefreshRemoteApplicationEvent,变更检测可以制定策略。但是,默认情况下,它会查找与应用程序名称匹配的文件中的更改(例如,foo.properties 的目标是 foo 应用程序,而 application.properties 则针对所有应用程序)。要覆盖该行为时使用的策略是 PropertyPathNotificationExtractor,它接受请求 headers 和 body 作为参数,并返回已更改的文件路径列表。
默认配置的开箱即用的使用 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket,除了来自 Github,Gitlab,Gitee 或 Bitbucket 的 JSON 通知,你可以通过使用 path={name}模式中的 form-encoded 的 body 参数 POST 到 /monitor 来触发更改通知,这样做会广播到匹配 {name} 模式(可以包含通配符)的应用程序。
仅当在 Config Server 和客户端应用程序中激活 spring-cloud-bus 时,才会传输 RefreshRemoteApplicationEvent。
默认配置还检测本地 git 存储库中的文件系统更改,在这种情况下,不使用 webhook,但是,只要编辑配置文件,就会广播刷新。
上一篇:嵌入 Config Server