深入了解EurekaClient的注册过程
目录
1.注册方法–register()
2.插曲:意外的收获–服务续租
3.实现Runnable接口重写run()
4.向注册中心更新状态的flag:isDirty
5.初始化定时任务 initScheduledTasks()
6.总结:EurekaClient register 流程
Eureka 的注册机制
jar: eureka-client-1.6.2.jar
package: com.netflix.discovery
class: EurekaClient 该接口继承了LookupService
@ImplementedBy(DiscoveryClient.class)
public interface EurekaClient extends LookupService {
... }
通过EurekaClient接口上的注解@ImplementedBy(DiscoveryClient.class)
我们知道这个接口的默认实现类是DiscoveryClient,这个类中定义了一些客户端的操作方法,本篇仅是看看客户端注册的流程,所以我们将目标放在register()这个方法:
注册方法- - -register()
/**
* Register with the eureka service by making the appropriate REST call.
*/
boolean register() throws Throwable {
logger.info(PREFIX + appPathIdentifier + ": registering service...");
EurekaHttpResponse<Void> httpResponse;
try {
httpResponse = eurekaTransport.registrationClient.register(instanceInfo);
} catch (Exception e) {
logger.warn("{} - registration failed {}", PREFIX + appPathIdentifier, e.getMessage(), e);
throw e;
}
if (logger.isInfoEnabled()) {
logger.info("{} - registration status: {}", PREFIX + appPathIdentifier, httpResponse.getStatusCode());
}
return httpResponse.getStatusCode() == 204;
}