How to selectively disable Eureka discovery client with Spring?

50,578

Solution 1

Do it like this: create some @Configuration annotated class (class body can be omitted) ex.:

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

It means that this configuration file (and @EnableDiscoveryClient within) will be loaded in every profile except "developement".

Hope that helps,

Solution 2

You can disable eureka client in application.yml using this:

eureka:
  client:
    enabled: false

It's also for one profile

Solution 3

With the latest version of Spring Cloud Finchley.SR2 if you are using the annotation @EnableDiscoveryClient you have to set all of the following properties in application.properties to disable the service registration:

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

Solution 4

Same issue here. You can simply put in your application property file the following configuration:

  spring:
    profiles: development

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

Solution 5

There is a standard boolean spring-cloud property

spring.cloud.discovery.enabled

This might be better than "eureka" specific since you might be using a different provider.

Share:
50,578
zinc wombat
Author by

zinc wombat

Updated on April 14, 2021

Comments

  • zinc wombat
    zinc wombat about 3 years

    Is there a way to disable spring-boot eureka client registration based on the spring profile?

    Currently I use the following annotations:

    @Configuration
    @EnableAutoConfiguration
    @EnableDiscoveryClient
    @EnableConfigServer
    
    public class ConfigApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConfigApplication.class, args);
        }
    }
    

    What I need is either a conditional such as (excuse the pseudo code)

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

    Or some way in the application properties file. I have tried setting application.yml file as:

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

    But this did not work.