|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Config 5.0.1! |
推送通知与 Spring Cloud Bus
许多源代码仓库提供商(如 GitHub、GitLab、Gitea、码云、Gogs 或 Bitbucket)会通过 Webhook 通知您仓库中的变更。您可以通过提供商的用户界面配置 Webhook,设置一个 URL 和一组您感兴趣的事件。例如,GitHub 会向 Webhook 发送一个 POST 请求,请求体为 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} 模式的应用程序广播(该模式可包含通配符)。
只有在配置服务器和客户端应用程序中均启用了 spring-cloud-bus 时,RefreshRemoteApplicationEvent 才会被传输。 |
| 默认配置还会检测本地 Git 仓库中的文件系统更改。在这种情况下,不会使用 Webhook。但一旦您编辑了配置文件,就会广播一次刷新操作。 |