在 spring cloud v1.1 中,我可以正确使用@EnableDiscoveryClient并@EnableEurekaClient注册一个 spring cloud 应用到 Eureka 和 Consul,因为我想使用 Eureka/Zuul 的断路器和 consul 的键值配置。但是在使用 spring cloud v1.2.1 时,对于相同的代码,我得到了以下异常:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method serviceRegistryEndpoint in org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration$ServiceRegistryEndpointConfiguration required a single bean, but 2 were found:
- eurekaServiceRegistry: defined by method 'eurekaServiceRegistry' in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.class]
- consulServiceRegistry: defined by method 'consulServiceRegistry' in class path resource [org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryAutoConfiguration.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
我发现这个类org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration是spring cloud v1.2.0的一个新类,它的目的是
服务发现、负载平衡和断路器等模式适用于一个通用抽象层,所有 Spring Cloud 客户端都可以使用该抽象层,独立于实现(例如通过 Eureka 或 Consul 发现)。
那么,这是否意味着使用 spring cloud v1.2,我可以将应用程序注册到仅 consul 但可以使用键值配置和断路器?