如何使用Spring有选择地禁用Eureka发现客户端?

时间:2016-02-01 23:01:56

标签: spring spring-boot netflix-eureka

有没有办法根据弹簧配置文件禁用spring-boot 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

但这不起作用。

7 个答案:

答案 0 :(得分:52)

您可以使用以下命令禁用application.yml中的eureka客户端:

eureka:
  client:
    enabled: false

这也适用于一个个人资料

答案 1 :(得分:25)

这样做:创建一些@Configuration带注释的类(类体可以省略)ex。:

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

这意味着除了“developpement”之外,每个配置文件中都会加载此配置文件(以及@EnableDiscoveryClient)。

希望有所帮助,

答案 2 :(得分:5)

这里的问题相同。您只需在应用程序属性文件中输入以下配置:

  spring:
    profiles: development

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

答案 3 :(得分:5)

有一个标准的布尔spring-cloud属性

spring.cloud.discovery.enabled

这可能比" eureka"具体,因为您可能正在使用其他提供商。

答案 4 :(得分:3)

对于最新版本的Spring Cloud Finchley.SR2,如果使用的是@EnableDiscoveryClient注释,则必须在application.properties中设置以下所有属性以禁用服务注册:

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

答案 5 :(得分:0)

使用最新版本的Spring boot,请将其添加到bootstrap.yml文件中

Spring cloud版本:Edgeware:SR3及以上

jq

这将禁用尤里卡。要启用它,我们只需要将其设置为true

答案 6 :(得分:0)

<块引用>

要禁用 Eureka Discovery Client,您可以设置 lsofeureka.client.enabled
尤里卡发现客户端也将 false 设置为 spring.cloud.discovery.enabled 时禁用。

参考
https://cloud.spring.io/spring-cloud-netflix/multi/multi__service_discovery_eureka_clients.html#_registering_with_eureka