推送通知与 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 被激活时,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。但是,一旦你编辑了配置文件,就会广播刷新。