¿Cuál es la diferencia entre EnableEurekaClient y EnableDiscoveryClient?

104

En algunas aplicaciones, vi que la gente está usando EnableEurekaClient. Y algunas otras aplicaciones de ejemplo utilizan EnableDiscoveryClient.

¿Hay alguna diferencia entre estos dos?

YongJiang Zhang
fuente

Respuestas:

179

Hay múltiples implementaciones de "Discovery Service" (eureka, cónsul , zookeeper ). @EnableDiscoveryClientvive en spring-cloud-commons y elige la implementación en el classpath. @EnableEurekaClientvive en spring-cloud-netflix y solo funciona para eureka. Si eureka está en tu classpath, son efectivamente iguales.

Spencergibb
fuente
Pregunta: ¿Las dos anotaciones mencionadas anteriormente habilitarán el interceptor habilitado para Ribbon inyectado en RestTemplate? ¿Alguna diferencia de comportamiento? Noté que en implementaciones anteriores de Spring Cloud @LoadBalancedse aplicó automáticamente, pero en la versión actual, se requiere explícitamente. Gracias.
fg78nc
1
Si. No hay diferencia. La anotación de carga equilibrada ha sido necesaria durante mucho tiempo.
spencergibb
4
¿Por qué alguien querría usar @EnableEurekaClient sobre el @EnableDisocveryClient más general? ¿No los vincularía eso a la implementación de eureka y dificultaría el cambio de backends SD en el futuro?
Adam Hughes
3
Si. La única respuesta es si quieren ser claros y hacer cumplir eureka.
spencergibb
3

El concepto de servicio de descubrimiento en Spring Cloud se implementa de diferentes maneras, como Eureka, cónsul, guardián del zoológico, etc. Si está utilizando Eureka de Netflix, @EnableEurekaClient es específicamente para eso. Pero si está utilizando cualquier otro descubrimiento de servicios, incluido Eureka, puede utilizar @EnableDiscoveryClient.

Chinmay Biswal
fuente
1

En cuanto a su practicidad y sencillez, si el centro registrado es eureka, entonces @EnableEurekaClientse recomienda. Si es otro centro de registro, @EnableDiscoveryClientse recomienda.

Méd Hassona El
fuente