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