私は、Spring Cloud Configを直接使用しているのではなく、Spring Cloud Hystrixスターターを介して推移的であると言って、これを前置きさせてください。
@EnableHystrix
のみを使用すると、Spring Cloudは構成サーバーを見つけようとしますが、私は使用していないため、予期せず失敗します。私の知る限り、アプリケーションは問題なく動作しますが、問題はステータスチェックにあります。構成サーバーがないため、ヘルスにはDOWN
と表示されます。
プロジェクトのソースを参照すると、spring.cloud.config.enabled=false
がこの機能チェーンを無効にすることを期待していますが、これは私が見ているものではありません。
1.0.0.RC1
(このプロパティを追加)にアップグレードし、@EnableCircuitBreaker
を使用した後:
{
status: "DOWN",
discovery: {
status: "DOWN",
discoveryClient: {
status: "DOWN",
error: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.cloud.client.discovery.DiscoveryClient] is defined"
}
},
diskSpace: {
status: "UP",
free: 358479622144,
threshold: 10485760
},
hystrix: {
status: "UP"
},
configServer: {
status: "DOWN",
error: "org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http: //localhost: 8888/bootstrap/default/master":Connection refused: connect; nested exception is Java.net.ConnectException: Connection refused: connect"
}
}
Configpropsエンドポイントを確認した後、seemsプロパティがオーバーライドされていることがわかります。親でconfigClientが有効になっていることに注意してください。
parent: {
configClientProperties: {
prefix: "spring.cloud.config",
properties: {
password: null,
discovery: {
enabled: false,
serviceId: "CONFIGSERVER"
},
name: "bootstrap",
label: "master",
env: "default",
uri: "http://localhost:8888",
enabled: true,
failFast: false,
username: null
}
}
},
configClientProperties: {
prefix: "spring.cloud.config",
properties: {
password: null,
discovery: {
enabled: false,
serviceId: "CONFIGSERVER"
},
name: "bootstrap",
label: "master",
env: "default",
uri: "http://localhost:8888",
enabled: false,
failFast: false,
username: null
}
}
私がこれを正しく行っていないと思われる場合は、どのような方向にもお願いします。
ブートストラップ中に構成サーバーが必要であり、そこから親プロパティソースが取得されます。 spring.cloud.config.enabled
プロパティをbootstrap.yml(または.properties)に移動するだけでよいようです。
私は同じ問題を抱えていましたが、構成サーバーを無効にしたいのですが(今のところ必要ないため)、上記のプロパティは少なくともRC1では正しくありません。
spring.cloud.enabled
する必要があります:
spring.cloud.config.enabled
spring.cloud.config.enabled=false
_を追加できます。またはSPRING_CLOUD_CONFIG_ENABLED=false
_ OR引数をSpringApplication.runにパラメーターに渡す場合、パラメーターをアプリに追加することにより、構成サーバークライアントを無効にすることができます。
public static void main(String[] args) throws Exception { SpringApplication.run(YourApplication.class, args); }
アプリを起動するには:
_Java -jar yourapplication.jar --spring.cloud.config.enabled=false
_
上記の変更をすべて試しましたが、それでも設定クライアントが停止しませんでした。
私のプロジェクトのpom.xmlファイルで次の除外を使用してそれを無効にすることができた唯一の方法。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</exclusion>
</exclusions>
</dependency>
検出サービスのフォローアップ(他の投稿がないように見えます)に関して、spring.cloud.config.discovery.enabled: false
の設定は私にとってはうまくいきましたが、それがbootstrap(yml/properties)で設定され、@EnableDiscoveryClient
アノテーションを私のApplication
クラス。これは、ディスカバリーが時々使用されないサービスにそのアノテーションを使用できないことを意味すると思います。