How to selectively disable Eureka discovery client with Spring?
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.
zinc wombat
Updated on April 14, 2021Comments
-
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.