首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring配置客户端缓存属性

Spring配置客户端缓存属性
EN

Stack Overflow用户
提问于 2018-09-10 17:11:33
回答 2查看 1.3K关注 0票数 2

当我更改属性存储库中的值并重新启动时,这些更改不会反映它的使用者。

my-microservice/application.properties:

代码语言:javascript
复制
spring.application.name=my-service
spring.cloud.config.uri=http://localhost:8888

MyServiceController.java

代码语言:javascript
复制
@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

代码语言:javascript
复制
server.port=8888
spring.application.name=spring-cloud-config-server

spring.cloud.config.server.git.uri=file://path

Git回购

my-service.properties

代码语言:javascript
复制
my-service.propertie1=1
my-service.propertie2=2

当我向localhost:8080/my-service,发送GET请求时,我得到的结果是:

代码语言:javascript
复制
{  
   "propertie1":1,
   "propertie2":2
}

好吧,没关系!但是,如果我更改了my-service.properties并重新启动了,这些更改会使而不是反映MyServiceController。我确实需要重新启动我的-microservice应用程序,以使更改生效。这是正常行为吗?我的意思是,如果这是远程的,那么应该配置它是否缓存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-10 18:05:40

为了更新配置,我向POST发送了一个localhost:8080/actuator/refresh请求。

默认情况下,/refresh不会在执行器端点中公开。

我在application.properties中公开了以下行:

代码语言:javascript
复制
management.endpoints.web.exposure.include=*

然后,向上面的端点发送一个没有POST主体的请求。

票数 2
EN

Stack Overflow用户

发布于 2020-01-08 12:28:46

要更新客户端应用程序,最好使用像RabbitMQ或Apache这样的消息代理。这一进程有三个层次:

  1. 客户端应用程序和配置服务器订阅消息代理中的特定主题(/refresh)。
  2. 配置服务器一旦更新,就向该主题发送刷新事件(/refresh)。(例如,在git中更新application.properties文件)。
  3. 所有客户端应用程序都在侦听刷新事件,当它们收到刷新消息时,它们将被更新。

简而言之,我们可以使用发布子模型来更新客户端应用程序。

使用和Apache的配置服务器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52262547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档