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

How to selectively disable Eureka discovery client with Spring?

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

但这没有用。

这样做:创建一些 @Configuration 注释 class (class 正文可以省略)例如:

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

这意味着这个配置文件(和@EnableDiscoveryClient中的)将被加载到除"developement"之外的每个配置文件中。

希望对您有所帮助,

同样的问题。您可以简单地将以下配置放入您的应用程序 属性 文件中:

  spring:
    profiles: development

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

您可以在 application.yml 中使用以下方法禁用 eureka 客户端:

eureka:
  client:
    enabled: false

也适用于一份个人资料

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

spring.cloud.discovery.enabled

这可能比 "eureka" 具体更好,因为您可能使用不同的提供商。

使用最新版本的Spring启动,请在bootstrap.yml文件中添加

Spring云版:Edgeware:SR3及以上

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

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

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

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

To disable the Eureka Discovery Client, you can set eureka.client.enabled to false.
Eureka Discovery Client will also be disabled when spring.cloud.discovery.enabled is set to false.

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