9. 推送通知和Spring Cloud总线
许多源代码存储库提供者(例如Github,Gitlab或Bitbucket)会通过webhook通知你存储库中的变化。您可以通过提供商的用户界面将webhook配置为您感兴趣的URL和一组事件。例如, Github 将通过一个包含提交列表的JSON主体和一个等于“push”的头部“X-Github-Event”来POST webhook。如果您在spring-cloud-config-monitor
库中添加了依赖项并在Config Server中激活了Spring Cloud Bus,则会启用“/ monitor”节点。
当webhook被激活时,配置服务器将发送一个 RefreshRemoteApplicationEvent
针对它认为可能已经改变的应用程序。更改检测可以制定策略,但默认情况下它只是查找与应用程序名称匹配的文件中的更改(例如,“foo.properties”针对“foo”应用程序,“application.properties”针对所有应用程序) 。如果要覆盖该行为,则该策略PropertyPathNotificationExtractor
将接受请求标头和主体作为参数,并返回已更改的文件路径的列表。
使用Github,Gitlab或Bitbucket时,默认的配置是可以使用的。除了来自Github,Gitlab或Bitbucket的JSON通知之外,您还可以通过发布带有表单编码body参数path={name}
的“/ monitor”来触发更改通知。这将传播到匹配“{name}”模式的应用程序(可以包含通配符)。
如果
spring-cloud-bus
是在配置服务器和客户端应用程序激活,则RefreshRemoteApplicationEvent
将仅仅是用作传输。默认的配置也检测本地git仓库中的文件系统变化(在这种情况下webhook没有被使用,但是一旦你编辑一个配置文件,刷新将被传播)。