从配置服务器读取拆分在多个属性文件中的动态配置



我想以这种模式添加几百个配置文件:

/application.yaml

其中1000、2000、3000是发件人代码。当对我的API进行REST调用时,它将有一个参数"senderCode",其值如1000、2000等

基于此,我想从配置服务器读取相应application.yaml的配置。

我的配置服务器的应用程序yaml有:

cloud:
config:
server:
git:
uri: http://example.com/my-configurations
search-paths: 1000, 1001, 1002, 1003

通过以上设置,我可以在客户端应用程序中配置属性,如下所示:

@ConfigurationProperties(prefix = "1000")
public class CodeBasedConfig {
String senderName;
String senderSource;
}

但这意味着要创建成千上万个像上面这样的文件。我希望能够将多个文件中的配置加载到这样的映射中:

密钥:1000
值:为1000配置
密钥:2000
价值:为2000配置

顺便说一句,如果我能按需阅读给定发件人的配置,而不是提前全部加载,那将是一种奖励。

我稍微更改了一下文件结构,但将它们分组到一个名为clients 的文件夹下

/application.yaml
clients/1000/application.yaml
clients/2000/application.yaml
clients/3000/application.yaml
clients/4000/application.yaml

在这之后,我更新了春季云服务器的searchPaths,如下所示:

spring:
cloud:
config:
server:
git:
uri: <my git url>
username: ${git_username}
password: ${git_password}
label: develop
searchPaths: clients/*

这样,配置服务器就可以读取"clients"文件夹下的所有application.yaml,并将它们合并到一个统一的配置中。

仅供参考,我的application.yaml在clients文件夹下有这样的内容:

1000/application.yaml
clients:
'1000':
attribute1: value1
attribute2: value2
2000/application.yaml
clients:
'2000':
attribute1: value1
attribute2: value2

当配置服务器向客户端提供这些配置时,上述配置显示为:

clients:
'1000':
attribute1: value1
attribute2: value2
'2000':
attribute1: value1
attribute2: value2

通过这种方式,我可以将大型配置分解/重构为更可维护的配置文件

相关内容

  • 没有找到相关文章

最新更新