user3105453
user3105453

Reputation: 1981

Feign + Consul: Enable only discovery (client), not registration (service)

Quoting the docs:

@EnableDiscoveryClient make the app into both a Consul "service" (i.e. it registers itself) and a "client" (i.e. it can query Consul to locate other services).

How can I configure a Spring Boot application that uses Feign as REST client and looks up service-instances in Consul but without registering the application itself at Consul?

I tried:

a. Various combinations of

spring.cloud.consul.enabled = true
spring.cloud.consul.discovery.enabled = true

b. Do not use the annotation at all, only

@EnableFeignClients
// @EnableDiscoveryClient

which produces an exception during the call:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ribbonServerList' defined in org.springframework.cloud.consul.discovery.ConsulRibbonClientConfiguration: Unsatisfied dependency expressed through method 'ribbonServerList' parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

My FeingClient interface is annotated like this:

@FeignClient(value = "test-service")

where test-service is a successfully registered service in Consul.

Upvotes: 0

Views: 1771

Answers (1)

spencergibb
spencergibb

Reputation: 25167

You should use @EnableDiscoveryClient(autoRegister=false).

Upvotes: 2

Related Questions