推送通知和 Spring Cloud Bus
许多源代码存储库提供商(例如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)通过 Webhook 通知您存储库中的更改。您可以通过提供商的用户界面将 Webhook 配置为 URL 和一组您感兴趣的事件。例如,Github 使用 POST 向 Webhook 发送带有 JSON 主体的请求,该主体包含提交列表和标头(X-Github-Event
)设置为 push
。如果您在 spring-cloud-config-monitor
库上添加依赖项并在您的 Config 服务器中激活 Spring Cloud Bus,则会启用 /monitor
端点。
当 Webhook 被激活时,Config 服务器会发送一个 RefreshRemoteApplicationEvent
,目标是它认为可能已更改的应用程序。更改检测可以进行策略化。但是,默认情况下,它会查找与应用程序名称匹配的文件中的更改(例如,foo.properties
以 foo
应用程序为目标,而 application.properties
以所有应用程序为目标)。当您想要覆盖此行为时要使用的策略是 PropertyPathNotificationExtractor
,它接受请求标头和主体作为参数,并返回已更改的文件路径列表。
默认配置可与 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket 开箱即用。除了来自 Github、Gitlab、Gitee 或 Bitbucket 的 JSON 通知外,您还可以通过向 /monitor
发送带有表单编码正文参数的 POST 请求来触发更改通知,其模式为 path={application}
。这样做会广播到与 {application}
模式匹配的应用程序(其中可以包含通配符)。
仅当 Config 服务器和客户端应用程序中都激活了 spring-cloud-bus 时,才会传输 RefreshRemoteApplicationEvent 。 |
默认配置还检测本地 git 存储库中的文件系统更改。在这种情况下,不会使用 Webhook。但是,只要您编辑配置文件,就会广播刷新。 |