What's the difference between EnableEurekaClient and EnableDiscoveryClient?

53,667

Solution 1

There are multiple implementations of "Discovery Service" (eureka, consul, zookeeper). @EnableDiscoveryClient lives in spring-cloud-commons and picks the implementation on the classpath. @EnableEurekaClient lives in spring-cloud-netflix and only works for eureka. If eureka is on your classpath, they are effectively the same.

Solution 2

Discovery service concept in spring cloud is implemented in different ways like Eureka, consul, zookeeper etc. If you are using Eureka by Netflix then @EnableEurekaClient is specifically for that. But if you are using any other service discovery including Eureka you can use @EnableDiscoveryClient.

Solution 3

In terms of its practicality and simplicity, if the registered center is eureka, then @EnableEurekaClient is recommended. If it is another registration center, @EnableDiscoveryClient is recommended.

Solution 4

@EnableEurekaCient will initilize the service discovery using eureka server, its like explicitly specifying to use EUREKA

While @EnableDiscovery Client will register dicovery service using the jar available in classpath like consul, Eureka, Kubernetes.

Share:
53,667
YongJiang Zhang
Author by

YongJiang Zhang

Updated on January 06, 2022

Comments

  • YongJiang Zhang
    YongJiang Zhang over 2 years

    In some applications, I saw people are using EnableEurekaClient. And some other example applications are using EnableDiscoveryClient.

    Is there any difference between these two?

  • fg78nc
    fg78nc about 6 years
    Question : Will both of above mentioned annotations enable Ribbon-enabled interceptor injected into RestTemplate? Any difference in behavior? I noticed that in previous Spring Cloud implementations @LoadBalanced was automatically applied, but in current version, it is required explicitly. Thank you.
  • spencergibb
    spencergibb about 6 years
    Yes. There is no difference. The load balanced annotation has been required for a long time.
  • Adam Hughes
    Adam Hughes over 5 years
    Why would someone want to use @EnableEurekaClient over the more general @EnableDisocveryClient? Wouldn't that bind them to the eureka implementation and make it harder to switch SD backends in the future?
  • spencergibb
    spencergibb over 5 years
    Yes. The only answer is if they want to be clear and enforce eureka.
  • abhinav kumar
    abhinav kumar over 2 years
    perfect explaination