Как выборочно отключить клиент Eureka discovery с помощью Spring?

Есть ли способ отключить регистрацию клиента spring -boot eureka на основе профиля spring?

В настоящее время я использую следующие аннотации:

@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

Но это не сработало.

Ответ 1

Сделайте это следующим образом: создайте аннотированный класс @Configuration (класс тела может быть опущен), например:

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

Это означает, что этот файл конфигурации (и @EnableDiscoveryClient внутри) будет загружен в каждом профиле, кроме "разработки".

Надеюсь, это поможет,

Ответ 2

Вы можете отключить клиента eureka в application.yml, используя это:

eureka:
  client:
    enabled: false

Он также для одного профиля

Ответ 3

Такая же проблема. Вы можете просто добавить в свой файл свойств приложения следующую конфигурацию:

  spring:
    profiles: development

  eureka:
    instance:
      hostname: localhost
    client:
      registerWithEureka: false
      fetchRegistry: false

Ответ 4

Существует стандартное логическое свойство spring -cloud

spring.cloud.discovery.enabled

Это может быть лучше, чем "эврика", поскольку вы можете использовать другого провайдера.

Ответ 5

С последней версией Spring Cloud Finchley.SR2, если вы используете аннотацию @EnableDiscoveryClient, вы должны установить все следующие свойства в application.properties, чтобы отключить регистрацию службы:

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

Ответ 6

С последней версией загрузки Spring, пожалуйста, добавьте это в файл bootstrap.yml

Версия весеннего облака: Edgeware: SR3 и выше

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

Это отключит эврика. Чтобы включить его, нам просто нужно сделать включенным как true