web-dev-qa-db-ja.com

SpringでEurekaディスカバリークライアントを選択的に無効にする方法は?

スプリングプロファイルに基づいてスプリングブートeurekaクライアント登録を無効にする方法はありますか?

現在、次の注釈を使用しています。

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableConfigServer

public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class, args);
    }
}

私が必要なのは、(擬似コードを言い訳する)などの条件です

@if (Profile!="development")
@EnableDiscoveryClient
@endif

または、アプリケーションプロパティファイルに何らかの方法で。 application.ymlファイルを次のように設定しようとしました:

spring:
  profiles: development
  cloud:
    discovery:
      enabled: false

しかし、これはうまくいきませんでした。

15
zinc wombat

次のようにしてください:@Configuration注釈付きクラス(クラス本体は省略可能)例:

@Profile("!development")
@Configuration
@EnableDiscoveryClient
public class EurekaClientConfiguration {
}

これは、この構成ファイル(および@EnableDiscoveryClient within)は、「開発」を除くすべてのプロファイルにロードされます。

お役に立てば幸いです

25
patrykos91

これを使用してapplication.ymlでeurekaクライアントを無効にできます:

eureka:
  client:
    enabled: false

また、1つのプロファイル用です

56
dmitryvim

ここで同じ問題。アプリケーションプロパティファイルに次の構成を単純に配置できます。

  spring:
    profiles: development

  eureka:
    instance:
      hostname: localhost
    client:
      registerWithEureka: false
      fetchRegistry: false
5
Timi Ruprecht

標準のブール型のスプリングクラウドプロパティがあります

spring.cloud.discovery.enabled

別のプロバイダーを使用している可能性があるため、これは「eureka」固有のものよりも優れている場合があります。

5
Rafael

Spring Cloud Finchley.SR2の最新バージョンでは、アノテーション@EnableDiscoveryClientを使用している場合、application.propertiesで以下のすべてのプロパティを設定してサービス登録を無効にする必要があります。

spring.cloud.service-registry.auto-registration.enabled=false
eureka.client.enabled=false
eureka.client.serviceUrl.registerWithEureka=false
3
ostmond

Springブートの最新バージョンでは、これをbootstrap.ymlファイルに追加してください

Springクラウドバージョン:Edgeware:SR3以降

spring:
  application:
    name: test
  cloud:
    service-registry:
      auto-registration:
        enabled: false

これにより、eurekaが無効になります。有効にするには、有効にする必要があります

1
denzal