推送通知和 Spring Cloud Bus
许多源代码仓库提供商(如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)通过 webhook 通知您仓库中的更改。您可以通过提供商的用户界面配置 webhook,指定一个 URL 和一组您感兴趣的事件。例如,Github 使用 POST 请求发送到 webhook,其 JSON 主体包含提交列表,并且头部(X-Github-Event)设置为 push。如果您添加了对 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} 模式匹配的应用程序(该模式可以包含通配符)。
只有当 spring-cloud-bus 在配置服务器和客户端应用程序中都激活时,RefreshRemoteApplicationEvent 才会传输。 |
| 默认配置还会检测本地 git 仓库中的文件系统更改。在这种情况下,不使用 webhook。但是,一旦您编辑了配置文件,就会广播刷新。 |