推送通知和 Spring Cloud Bus
许多源代码仓库提供商(例如 Github、Gitlab、Gitea、Gitee、Gogs 或 Bitbucket)通过 webhook 通知你仓库中的变化。你可以通过提供商的用户界面配置 webhook 的 URL 和感兴趣的事件集合。例如,Github 会向 webhook 发送一个 POST 请求,其 JSON 主体包含提交列表,并且头部(X-Github-Event
)设置为 push
。如果你添加对 spring-cloud-config-monitor
库的依赖并在 Config Server 中激活 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 不会被使用。然而,只要你编辑一个配置文件,就会广播一次刷新。 |