跳到主要内容

推送通知与 Spring Cloud Bus

DeepSeek V3 中英对照 Push Notifications and 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。但是,一旦你编辑了配置文件,就会广播刷新。