1 嵌入式配置服务器
配置服务器最好作为独立应用程序运行,但如果需要,可以将其嵌入到另一个应用程序中。只需使用@EnableConfigServer注释。在这种情况下可以使用的可选属性是spring.cloud.config.server.bootstrap,它是一个标志,表示服务器应该从自己的远程存储库配置自身。该标志默认关闭,因为它可能会延迟启动。但是当嵌入在另一个应用程序中时,与其他应用程序相同的方式初始化是有意义的。当spring.cloud.config.server.bootstrap设为true时,必须使用复合环境库:
spring:
application:
name: configserver
profiles:
active: composite
cloud:
config:
server:
composite:
- type: native
search-locations: ${HOME}/Desktop/config
bootstrap: true
如果使用bootstrap标志,配置服务器将需要在bootstrap.yml中配置其名称和存储库URI。
要更改服务器接口的地址,您可以(可选)设置spring.cloud.config.server.prefix,例如“/ config”,以提供带前缀的资源接口。前缀应该以“/”开始但不以“/”结尾。它应用于Config Server中的@RequestMappings(即Spring Boot的server.servletPath和server.contextPath前缀之下)。
如果您想直接从后端存储库(而不是从配置服务器)读取应用程序的配置,这基本上是一个没有接口的嵌入式配置服务器。如果不使用@EnableConfigServer注释(只设置spring.cloud.config.server.bootstrap=true),则可以完全关闭这些接口。
2 推送通知和Spring Cloud Bus
许多源代码存储库(例如Github,Gitlab或Bitbucket)可以通过webhook通知您存储库中的更改。您可以通过提供商的用户界面为webhook配置一组感兴趣的事件。例如, Github 将包含提交列表的JSON主体和名为“X-Github-Event”值为“push”的header发送到webhook。如果您添加依赖spring-cloud-config-monitor库并激活配置服务器中的Spring Cloud Bus,则启用“/ monitor”接口。
当Webhook被激活时,配置服务器将发送一个RefreshRemoteApplicationEvent给他认为可能已经改变的应用程序。变更检测可以进行策略化。但默认情况下,它只是查找与应用程序名称匹配的文件的更改(例如,“foo.properties”针对的是“foo”应用程序,“application.properties”针对所有应用程序) 。如果要覆盖该策略的默认行为,对应的是PropertyPathNotificationExtractor,它接受请求header和body作为参数,并返回更改的文件路径列表。
默认配置与Github、Gitlab、Gitea、Gitee、Gogs或Bitbucket配合使用。除了这些工具的JSON通知之外,您还可以通过使用表单参数(path={application}) POST到“/ monitor”来触发更改通知。这将广播到匹配“{application}”模式的应用程序(可以包含通配符)。
只有在配置服务器和客户端应用程序中激活spring-cloud-bus时才会传送RefreshRemoteApplicationEvent。
默认配置还检测本地git存储库中的文件系统更改。在这种情况下不使用webhook,但是一旦编辑配置文件,将会广播刷新事。
Spring Cloud Config 使用说明(1) – 快速开始
Spring Cloud Config 配置中心使用说明(2) – 服务器+git库
Spring Cloud Config 配置中心使用说明(3) – 服务器+文件存储
Spring Cloud Config 配置中心使用说明(4) – 服务器+数据库存储
Spring Cloud Config 配置中心使用说明(5) – 服务器健康与安全配置
Spring Cloud Config 配置中心使用说明(6) – 服务器 配置文件格式
Spring Cloud Config 配置中心使用说明(7) – 服务器 配置变更通知
Spring Cloud Config 配置中心使用说明(8) – 客户端