Spring Open-Feign无法以配置客户端中使用的多个spring.application.name开头

时间:2019-06-25 06:11:42

标签: spring-boot spring-cloud-config spring-cloud-feign

在我的应用程序中,我们使用spring cloud config,在其中托管如下文件支持的属性

配置服务器

spring.profiles.active=native
spring.cloud.config.server.native.search-locations=file:///${SRC.HOME}/config/,file:///${SRC.HOME}/config/app1/,file:///${SRC.HOME}/config/app2/,file:///${SRC.HOME}/config/app3/

配置客户端

spring.profiles.active=dev,spring.cloud.config.uri=http://localhost:7070/,spring.application.name=app1,app2,app3

最近,我们引入了spring open-feign,并且注意到只有在存在单个应用程序名称时,主类才会启动。当您以逗号分隔的方式提供名称(spring.application.name = app1,app2,app3)时,就会出现以下异常中断

问题

  1. 有人遇到过吗?
  2. 我可能做错了什么?
  3. 我是否需要更改Config加载方式,以便我提供 唯一的名字?
  4. 如何容纳此功能并保持配置加载方法 一样。

    Spring-boot Version -2.1.5.RELEASE
    Open-Feign - 2.1.1.Release
    Spring-Cloud - Greenwich.SR1
    

例外

  

原因:java.lang.ClassCastException:java.util.ArrayList不能为   转换为java.lang.String   com.netflix.config.ConfigurationBasedDeploymentContext.getValueFromConfig(ConfigurationBasedDeploymentContext.java:329)   〜[archaius-core-0.7.6.jar:0.7.6]

1 个答案:

答案 0 :(得分:0)

  1. 每个应用程序应仅具有一个唯一名称。 (考虑到如果您使用eurake来实现混帐,则可以让同一个应用程序的多个实例进行负载平衡)
  2. 如果您希望同一应用使用不同的配置文件,则可以使用配置文件,例如spring.profiles.active = dev2。

顺便说一句,不知道为什么需要多个配置文件的位置,但是我认为所有配置文件的一个统一位置是常见的做法。