You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
SOP/doc/docs/files/10113_扩展其它注册中心.md

2.5 KiB

扩展其它注册中心

SOP默认使用的注册中心是nacos,可以扩展实现其它注册中心,其中eureka分支是已经扩展好的,使用eureka注册中心。

现在以扩展consul为例,说下具体扩展步骤:

  • 扩展注册中心监听

sop-gateway-common工程下,找到com.gitee.sop.gatewaycommon.route包,可以看到有两个类

EurekaRegistryListenerNacosRegistryListener

这两个类的作用是监听注册中心服务注册,从而触发事件,然后获取新注册的服务。

新建一个类: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包,可以看到有两个类,RegistryServiceEurekaImplRegistryServiceNacosImpl 它们实现了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