9. 推送通知和 Spring Cloud Bus

许多源代码存储库提供程序(例如 Github,Gitlab,Gita,Gitee,Gogs 或 Bitbucket)都通过 Webhook 通知您存储库中的更改。您可以通过提供者的用户界面将 Webhook 配置为 URL 和感兴趣的一组事件。例如,Github使用带有 JSON 正文的 POST 到 Webhook,JSON 正文包含提交列表和设置为push的 Headers(X-Github-Event)。如果在spring-cloud-config-monitor库上添加依赖项并在 Config Server 中激活 Spring Cloud Bus,则将启用/monitor端点。

激活 Webhook 后,Config Server 会发送一个RefreshRemoteApplicationEvent,指向它认为可能已更改的应用程序。可以将变更检测策略化。但是,默认情况下,它会查找与应用程序名称匹配的文件中的更改(例如foo.properties面向foo应用程序,而application.properties面向所有应用程序)。当您想覆盖该行为时,使用的策略是PropertyPathNotificationExtractor,该策略接受请求 Headers 和正文作为参数,并返回已更改文件路径的列表。

默认配置可以与 Github,Gitlab,Gitea,Gitee,Gogs 或 Bitbucket 一起使用。除了来自 Github,Gitlab,Gitee 或 Bitbucket 的 JSON 通知之外,您还可以通过以path={name}模式使用表单编码的正文参数 POST 到/monitor来触发更改通知。这样做会向与{name}模式匹配的应用程序 Broadcast(可以包含通配符)。

Note

只有在 Config Server 和 Client 端应用程序中都激活了spring-cloud-bus时,才会发送RefreshRemoteApplicationEvent

Note

默认配置还检测本地 git 存储库中的文件系统更改。在这种情况下,不使用 Webhook。但是,一旦您编辑配置文件,就会 Broadcast 刷新。