2.5 KiB
扩展其它注册中心
SOP默认使用的注册中心是nacos,可以扩展实现其它注册中心,其中eureka
分支是已经扩展好的,使用eureka注册中心。
现在以扩展consul为例,说下具体扩展步骤:
- 扩展注册中心监听
在sop-gateway-common
工程下,找到com.gitee.sop.gatewaycommon.route包,可以看到有两个类
EurekaRegistryListener
和NacosRegistryListener
这两个类的作用是监听注册中心服务注册,从而触发事件,然后获取新注册的服务。
新建一个类:ConsulRegistryListener
,继承BaseRegistryListener
实现onEvent方法,具体内容可参考EurekaRegistryListener
类
public class ConsulRegistryListener extends BaseRegistryListener {
/**
* 注册中心触发事件,可以从中获取服务<br>
*
* 这个方法做的事情有2个:<br>
*
* 1. 找出新注册的服务,调用pullRoutes方法<br>
* 2. 找出删除的服务,调用removeRoutes方法<br>
*
* @param applicationEvent 事件体
*/
@Override
public void onEvent(ApplicationEvent applicationEvent) {
}
}
配置类中新增:
@Bean
@ConditionalOnProperty("spring.cloud.consul.host")
RegistryListener registryListenerConsul() {
return new ConsulRegistryListener();
}
其中@ConditionalOnProperty("spring.cloud.consul.host")
的意思是只有配置了spring.cloud.consul.host
属性,这个Bean才会被Spring注入
sop-gateway
工程添加Spring Cloud Consul
相关依赖,配置文件新增consul配置
- 扩展admin实现
找到sop-admin-server
工程下com.gitee.sop.adminserver.service包,可以看到有两个类,RegistryServiceEurekaImpl
和RegistryServiceNacosImpl
它们实现了com.gitee.sop.adminserver.service.RegistryService
接口,因此我们要新建一个consul对应的类
新建RegistryServiceConsulImpl
,然后实现RegistryService接口中的方法,具体可参考RegistryServiceEurekaImpl
public class RegistryServiceConsulImpl implements RegistryService {
}
打开com.gitee.sop.adminserver.config.WebConfig
类
新增一条配置
/**
* 当配置了registry.name=eureka生效。
*
* @return
*/
@Bean
@ConditionalOnProperty(value = "registry.name", havingValue = "consul")
RegistryService registryServiceEureka() {
return new RegistryServiceConsulImpl();
}
application配置文件新增一条配置:
registry.name=consul