我目前有许多以分布式方式工作的可部署应用程序来解决业务问题。我们目前正在使用许多属性配置文件来提供基于系统环境变量的每个环境的更改配置。所有这些可部署应用程序共享数据库和消息传递的公共配置。目前,这是通过从类路径中提取属性文件,并让两个已部署的应用程序为每个包含属性文件的连接(db、jms)共享一个公共jar来实现的。
如果可能的话,我希望开始使用Spring Config Server来外部化此配置。我有一个关于如何共享此公共配置的问题。
现在看起来是这样的:
Web1
- 资料库
- jms
留言1 - 资料库
- jms
在这种情况下,两个部署的应用程序共享相同的连接,并且这些连接会根据环境(lab,prf,prd等)而变化。我如何使用Spring Configuration Server实现相同的连接,其中我为每个可部署的应用程序配置了应用程序?
Application.yml
Web1.yml
Web1-dev.yml
Messaging1.yml
Messaging1-dev.yml
如果一个环境的连接属性发生了变化,我需要对每个可部署的应用程序配置进行更改,而不是只进行一次。
目前是否有任何方法可以实现这一点?我是否只是错过了一个简单的点?
5条答案
按热度按时间watbbzwu1#
我在这里找到了工作解决方案https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html,段落“2.1.5与所有应用程序共享配置”。它说:
对于基于文件的仓库(例如git,svn和native),文件名为application* 的资源在所有客户端应用程序之间共享(例如application.properties,application.yml,application-*.properties等)。您可以使用这些文件名的资源来配置全局默认值,并在必要时将其覆盖到特定于应用程序的文件中。
你应该application.properties在配置仓库的顶层创建www.example.com或application.yml(如果是基于git或svn的)。不要忘记commit修改。
xqnpmsa82#
这就是我如何为我的设置配置。
1所有服务和环境中的所有公共属性都将以
root->application.properties files
显示2特定于服务的所有环境中的所有公共属性将为
root->service-X.properties files
**3:**类似地,要在特定环境中具有公共属性,请使用
env->application.properties
文件nkcskrwz3#
最后找到了解决方案。它被埋在github的问题中...
https://github.com/spring-cloud/spring-cloud-config/issues/32
它的工作原理就像描述的那样。我只注意到,你需要把文件放在/config文件夹中才能使它工作。如果你把它放在根目录中,该文件由配置服务器本身使用,不包括在配置请求中。
zy1mlcev4#
application.properties/application.yml
将在所有应用程序中共享。application-DEV.properties/application-DEV.yml
将在所有DEV
环境应用程序中共享。您可以使用任何spring
配置文件替换DEV
。{applicationName}.properties/{applicationName}.yml
将在给予应用程序中共享。laawzig25#
对于尝试非git方法的人,这里是application.properties我的cloud-config应用程序的www.example.com
我在我的资源部分的app-config文件夹中创建了
application.properties
。它也可以与profiles. ex一起使用:application-prod.properties