推送通知与Spring Cloud Bus
许多源代码仓库提供商(例如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)通过 webhook 通知您仓库中的变更。您可以通过提供商用户界面将 webhook 配置为一个 URL 和一组您感兴趣的事件。例如,Github 使用 POST 请求向 webhook 发送一个包含提交列表的 JSON 主体,并设置一个标头 (X-Github-Event) 为 push。如果您在 Config Server 中添加对 spring-cloud-config-monitor 库的依赖并激活 Spring Cloud Bus,那么 /monitor 端点将被启用。
当 webhook 被激活时,配置服务器会发送一个 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。然而,一旦你编辑了配置文件,就会广播刷新。