详解SpringCloudeureka服务状态监听-创新互联
一.前言
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了井研免费建站欢迎大家使用!近期由于公司不同平台项目之间的业务整合,需要做到相互访问! 每个平台均有自己的注册中心和服务,且注册中心相互之间并没有相互注册!
借助spring的事件监听,在eureka-server端监听服务注册,将所有服务的ip和port存放至redis库,然后让其他平台服务通过redis库获取ip和端口号,进而进行http调用.结构图如下:
二.事件解析
事件列表
在org.springframework.cloud.netflix.eureka.server.event
包下会发现如下类:
EurekaInstanceCanceledEvent
: 服务下线事件EurekaInstanceRegisteredEvent
: 服务注册事件EurekaInstanceRenewedEvent
: 服务续约事件EurekaRegistryAvailableEvent
: eureka注册中心启动事件EurekaServerStartedEvent
: eureka server启动时间
源码分析
打开org.springframework.cloud.netflix.eureka.server.InstanceRegistry
类,会发现当eureka服务续约、注册、取消等时,spring会publish不同的事件,对应的事件类就是上面的列表.
续约事件
@Override public boolean renew(final String appName, final String serverId, boolean isReplication) { log("renew " + appName + " serverId " + serverId + ", isReplication {}" + isReplication); Listapplications = getSortedApplications(); for (Application input : applications) { if (input.getName().equals(appName)) { InstanceInfo instance = null; for (InstanceInfo info : input.getInstances()) { if (info.getId().equals(serverId)) { instance = info; break; } } // 发布续约事件 publishEvent(new EurekaInstanceRenewedEvent(this, appName, serverId, instance, isReplication)); break; } } return super.renew(appName, serverId, isReplication); }
本文标题:详解SpringCloudeureka服务状态监听-创新互联
本文路径:http://pwwzsj.com/article/deppoj.html