到目前为止我实施的是:
- Spring Cloud Config Server with "native" repo .
spring.profiles.active: native
spring.cloud.config.server.native.searchLocations: file:/path/to/config-repo
-
Config Server正在通过RabbitMQ向Config Client App发送通知,如http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_push_notifications_and_spring_cloud_bus
-
Config Client App在Service bean上注释了@RefreshScope .
所以/ config-repo有3个文件 - application.yaml,client.yaml和client.json所有yaml属性更改都将由Config Client App自动重新加载 . 但是,client.json没有 .
基于https://github.com/spring-cloud/spring-cloud-config/issues/147,我可以通过REST api调用Config Server来获取Config Client App上的文件,使用////client.json
问题是:
1)Config Server监控此纯文本文件是否更改为“native”?
2)Config Client App如何在更新后自动重新加载此client.json? (我可以通过调度任务来调用Config服务器,但这并不理想 . )
2 回答
Config客户端:restTemplate.getForObject(“http://localhost:8080/application/default/master/testing-dev.json”,String.class);
可以获取.json后缀文件内容,但我认为它没有获取文件内容,有其他方式来获取文件内容
我喜欢这样的方式(还没有完成):我有一个以逗号分隔的URI列表形式的spring.cloud.config.server.native.serach-locations
我创建了FileMonitorConfiguration bean(但它有一些问题,因为它被安排了2次,一个bean本身和一个spring enhaced实例,我对此并不熟悉)
并实现(只是草稿)NativePropertyPathNotificationExtractor