跨云应用程序的Spring Cloud Config Server共享属性

Jef*_*xor 12 spring properties spring-cloud spring-cloud-config

我目前有许多可部署的应用程序,它们以分布式方式工作,以解决业务问题.我们目前正在使用许多属性配置文件来根据系统环境变量提供每个环境的更改配置.所有这些可部署应用程序共享数据库和消息传递的通用配置 目前,这是通过从类路径中获取属性文件并使两个已部署的应用程序共享包含属性文件的每个连接(db,jms)的公共jar来实现的.

我希望尽可能开始使用Spring Config Server外部化此配置.我有一个关于如何共享此常见配置的问题.

目前它看起来像这样: -

Web1
- 数据库
- jms

Messaging1
- 数据库
- jms

在这种情况下,两个部署的应用程序共享相同的连接,并且这些连接会根据环境(lab,prf,prd等)进行更改.如何为每个可部署应用程序配备应用程序配置的Spring配置服务器实现相同目的?

Application.yml
Web1.yml Web1
-dev.yml
Messaging1.yml
Messaging1-dev.yml

如果为环境更改了连接属性,我需要对每个可部署的应用程序配置进行更改,而不是只进行一次.

目前有没有实现这一目标?我只是错过了一个简单的观点吗?

Woj*_*cki 7

我在这里找到有效的解决方案https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html段落“ 2.1.5与所有应用程序共享配置”。它说:

使用基于文件的存储库(即git,svn和native),在所有客户端应用程序(例如application.properties,application.yml,application-*。properties等)之间共享application *中带有文件名的资源。您可以使用具有这些文件名的资源来配置全局默认值,并在必要时将其设置为特定于应用程序的文件。

您应该在配置存储库的顶层(如果它是基于git或svn的)创建application.properties或application.yml。不要忘记提交更改。

  • 也适用于数据库存储库。只需将应用程序列的值设置为“应用程序”即可。 (3认同)

Nir*_*ane 6

这就是我的设置配置方式。

1所有服务和环境中的所有通用属性都将位于root->application.properties files

2特定于服务的所有环境中的所有通用属性都将是root->service-X.properties files

3:env->application.properties同样,要跨特定环境使用文件 具有共同属性

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri:[git repo]
          search-paths: /,/{profile}/
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ssi*_*lar 3

终于找到了解决办法。它被埋在 github 的问题中......

https://github.com/spring-cloud/spring-cloud-config/issues/32

它的工作原理就像所描述的那样。我只注意到,您需要将文件放在 /config 文件夹中才能使其工作。如果将其放在根目录中,则该文件将由配置服务器本身使用,并且不会包含在配置请求中。