Spring 云 - 配置客户端缓存属性
Spring Cloud - Configuration client caching properties
当我更改我的属性存储库中的值并重新启动 Spring 云配置服务器时,更改不会反映在它的消费者上。
my-microservice/application.属性:
spring.application.name=my-service
spring.cloud.config.uri=http://localhost:8888
MyServiceController.java
@RestController
public class MyServiceController {
@Autowired
private Configuration configuration;
@GetMapping("/my-service")
public MyServiceBean retrieveMyServiceProperties() {
// show propertie's values
return new MyServiceBean(configuration.getPropertie1(), configuration.getPropertie2());
}
}
spring-cloud-config-server/application.properties
server.port=8888
spring.application.name=spring-cloud-config-server
spring.cloud.config.server.git.uri=file://path
Git 回购
我的-service.properties
my-service.propertie1=1
my-service.propertie2=2
当我向 localhost:8080/my-service 发送 GET 请求时,我得到的结果是:
{
"propertie1":1,
"propertie2":2
}
很好,没关系!
但是,如果我更改 my-service.properties
并重新启动我的 Spring 云配置服务器,所做的更改 不会 反映 MyServiceController
。我确实需要重新启动 my-microservice 应用程序,以使更改生效。
这是正常行为吗?我的意思是,如果这是远程的,那么,应该配置是否缓存。
为了更新配置,我向 localhost:8080/actuator/refresh
发送了一个 POST
请求。
默认情况下,/refresh
未在执行器端点中公开。
我确实在 application.properties 中暴露了以下行:
management.endpoints.web.exposure.include=*
然后,向上面的端点发送一个 POST
没有 没有 正文的请求。
要更新您的客户端应用程序,最好使用 RabbitMQ 或 Apache Kafka 等消息代理。
此过程分为三个级别:
客户端应用程序和配置服务器订阅消息代理中的特定主题(/刷新)。
配置服务器在更新后立即向该主题 (/refresh) 发送 refresh 事件. (例如 application.properties 文件在 git 中更新)。
所有客户端应用程序都在监听刷新事件,当它们收到刷新消息时,它们将被更新
In brief, we can use the pub-sub model for updating our client applications.
Config Server using Spring Cloud Config and Apache Kafka
当我更改我的属性存储库中的值并重新启动 Spring 云配置服务器时,更改不会反映在它的消费者上。
my-microservice/application.属性:
spring.application.name=my-service
spring.cloud.config.uri=http://localhost:8888
MyServiceController.java
@RestController
public class MyServiceController {
@Autowired
private Configuration configuration;
@GetMapping("/my-service")
public MyServiceBean retrieveMyServiceProperties() {
// show propertie's values
return new MyServiceBean(configuration.getPropertie1(), configuration.getPropertie2());
}
}
spring-cloud-config-server/application.properties
server.port=8888
spring.application.name=spring-cloud-config-server
spring.cloud.config.server.git.uri=file://path
Git 回购
我的-service.properties
my-service.propertie1=1
my-service.propertie2=2
当我向 localhost:8080/my-service 发送 GET 请求时,我得到的结果是:
{
"propertie1":1,
"propertie2":2
}
很好,没关系!
但是,如果我更改 my-service.properties
并重新启动我的 Spring 云配置服务器,所做的更改 不会 反映 MyServiceController
。我确实需要重新启动 my-microservice 应用程序,以使更改生效。
这是正常行为吗?我的意思是,如果这是远程的,那么,应该配置是否缓存。
为了更新配置,我向 localhost:8080/actuator/refresh
发送了一个 POST
请求。
默认情况下,/refresh
未在执行器端点中公开。
我确实在 application.properties 中暴露了以下行:
management.endpoints.web.exposure.include=*
然后,向上面的端点发送一个 POST
没有 没有 正文的请求。
要更新您的客户端应用程序,最好使用 RabbitMQ 或 Apache Kafka 等消息代理。 此过程分为三个级别:
客户端应用程序和配置服务器订阅消息代理中的特定主题(/刷新)。
配置服务器在更新后立即向该主题 (/refresh) 发送 refresh 事件. (例如 application.properties 文件在 git 中更新)。
所有客户端应用程序都在监听刷新事件,当它们收到刷新消息时,它们将被更新
In brief, we can use the pub-sub model for updating our client applications.
Config Server using Spring Cloud Config and Apache Kafka