诸如服务发现,负载平衡和断路器之类的模式适用于所有Spring Cloud客户端可以独立于实现(例如通过Eureka或Consul发现)的消耗的共同抽象层。
@EnableDiscoveryClient
Commons提供@EnableDiscoveryClient
注释。这通过META-INF/spring.factories
查找DiscoveryClient
接口的实现。Discovery Client的实现将在org.springframework.cloud.client.discovery.EnableDiscoveryClient
键下的spring.factories
中添加一个配置类。DiscoveryClient
实现的示例是Spring Cloud Netflix Eureka,Spring Cloud Consul发现和Spring Cloud Zookeeper发现。
默认情况下,DiscoveryClient
的实现将使用远程发现服务器自动注册本地Spring Boot服务器。可以通过在@EnableDiscoveryClient
中设置autoRegister=false
来禁用此功能。
ServiceRegistry
Commons现在提供了一个ServiceRegistry
接口,它提供了诸如register(Registration)
和deregister(Registration)
之类的方法,允许您提供定制的注册服务。Registration
是一个标记界面。
@Configuration
@EnableDiscoveryClient(autoRegister=false)
public class MyConfiguration {
private ServiceRegistry registry;
public MyConfiguration(ServiceRegistry registry) {
this.registry = registry;
}
// called via some external process, such as an event or a custom actuator endpoint
public void register() {
Registration registration = constructRegistration();
this.registry.register(registration);
}
}
每个ServiceRegistry
实现都有自己的Registry
实现。
服务部门自动注册。欢迎大家一起学习研究相关技术愿意了解源码的朋友直接求求交流分享技术二一四七七七五六三三
默认情况下,ServiceRegistry
实现将自动注册正在运行的服务。要禁用该行为,有两种方法。您可以设置@EnableDiscoveryClient(autoRegister=false)
永久禁用自动注册。您还可以设置spring.cloud.service-registry.auto-registration.enabled=false
以通过配置禁用该行为。
服务注册执行器端点
Commons提供/service-registry
致动器端点。该端点依赖于Spring应用程序上下文中的Registration
bean。通过GET调用/service-registry/instance-status
将返回Registration
的状态。具有String
主体的同一端点的POST将将当前Registration
的状态更改为新值。请参阅您正在使用的ServiceRegistry
实现的文档,以获取更新状态的允许值和为状态获取的值。