Qual é a diferença entre EnableEurekaClient e EnableDiscoveryClient?

104

Em alguns aplicativos, vi que as pessoas estão usando EnableEurekaClient. E alguns outros aplicativos de exemplo estão usando EnableDiscoveryClient.

Existe alguma diferença entre esses dois?

YongJiang Zhang
fonte

Respostas:

179

Existem várias implementações de "Discovery Service" (eureka, cônsul , zookeeper ). @EnableDiscoveryClientmora em spring-cloud-commons e escolhe a implementação no classpath. @EnableEurekaClientmora em spring-cloud-netflix e só funciona para eureka. Se eureka estiver em seu caminho de classe, eles serão efetivamente os mesmos.

Spencergibb
fonte
Pergunta: Ambas as anotações mencionadas acima habilitarão o interceptor habilitado para fita injetado no RestTemplate? Alguma diferença de comportamento? Percebi que nas implementações anteriores do Spring Cloud @LoadBalancedfoi aplicado automaticamente, mas na versão atual, é exigido explicitamente. Obrigado.
fg78nc
1
Sim. Não há diferença. A anotação com balanceamento de carga é necessária há muito tempo.
spencergibb
4
Por que alguém iria querer usar @EnableEurekaClient em vez do @EnableDisocveryClient mais geral? Isso não os vincularia à implementação eureka e dificultaria a troca de back-ends de SD no futuro?
Adam Hughes
3
Sim. A única resposta é se eles querem ser claros e fazer cumprir o eureka.
spencergibb
3

O conceito de serviço de descoberta no Spring Cloud é implementado de maneiras diferentes, como Eureka, consul, zookeeper etc. Se você estiver usando o Eureka da Netflix, @EnableEurekaClient é especificamente para isso. Mas se você estiver usando qualquer outra descoberta de serviço, incluindo Eureka, você pode usar @EnableDiscoveryClient.

Chinmay Biswal
fonte
1

Em termos de praticidade e simplicidade, se o centro registrado é eureka, então @EnableEurekaClienté recomendado. Se for outro centro de registro, @EnableDiscoveryClienté recomendado.

Méd Hassona El
fonte