This commit is contained in:
tanghc
2019-09-30 14:33:28 +08:00
parent 60bde25c23
commit b4b48fc482
3 changed files with 129 additions and 31 deletions

View File

@@ -0,0 +1,86 @@
# 扩展其它注册中心
SOP默认使用的注册中心是[nacos](https://nacos.io/),可以扩展实现其它注册中心,其中`eureka`分支是已经扩展好的使用eureka注册中心。
现在以扩展[consul](https://www.consul.io/)为例,说下具体扩展步骤:
- 扩展注册中心监听
`sop-gateway-common`工程下找到com.gitee.sop.gatewaycommon.route包可以看到有两个类
`EurekaRegistryListener``NacosRegistryListener`
这两个类的作用是监听注册中心服务注册,从而触发事件,然后获取新注册的服务。
新建一个类:`ConsulRegistryListener`,继承`BaseRegistryListener`
实现onEvent方法具体内容可参考`EurekaRegistryListener`
```java
public class ConsulRegistryListener extends BaseRegistryListener {
/**
* 注册中心触发事件,可以从中获取服务<br>
*
* 这个方法做的事情有2个<br>
*
* 1. 找出新注册的服务调用pullRoutes方法<br>
* 2. 找出删除的服务调用removeRoutes方法<br>
*
* @param applicationEvent 事件体
*/
@Override
public void onEvent(ApplicationEvent applicationEvent) {
}
}
```
配置类中新增:
```java
@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
```java
public class RegistryServiceConsulImpl implements RegistryService {
}
```
打开`com.gitee.sop.adminserver.config.WebConfig`
新增一条配置
```java
/**
* 当配置了registry.name=eureka生效。
*
* @return
*/
@Bean
@ConditionalOnProperty(value = "registry.name", havingValue = "consul")
RegistryService registryServiceEureka() {
return new RegistryServiceConsulImpl();
}
```
application配置文件新增一条配置
```properties
registry.name=consul
```