This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new cf85e6c [type:refactor] optimize metadata & uri data register. (#2154)
cf85e6c is described below
commit cf85e6cca59a98389bafeba15b6d3c9249ea9568
Author: Qicz <[email protected]>
AuthorDate: Tue Sep 28 10:52:02 2021 +0800
[type:refactor] optimize metadata & uri data register. (#2154)
---
.../executor/RegisterServerConsumerExecutor.java | 32 +++++++++++++++++++---
.../subscriber/URIRegisterExecutorSubscriber.java | 21 +++++---------
.../AbstractShenyuClientRegisterServiceImpl.java | 2 +-
.../ShenyuClientRegisterDefaultServiceImpl.java | 2 +-
.../ShenyuClientRegisterServiceFactory.java | 4 +--
5 files changed, 39 insertions(+), 22 deletions(-)
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
index a9e8130..7270b40 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
@@ -17,15 +17,20 @@
package org.apache.shenyu.admin.disruptor.executor;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shenyu.common.utils.CollectionUtils;
+import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
+import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.apache.shenyu.register.common.dto.URIRegisterDTO;
import org.apache.shenyu.register.common.subsriber.ExecutorSubscriber;
import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
-import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
import org.apache.shenyu.register.common.type.DataType;
import org.apache.shenyu.register.common.type.DataTypeParent;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -43,13 +48,32 @@ public final class RegisterServerConsumerExecutor extends
QueueConsumerExecutor<
@Override
public void run() {
List<DataTypeParent> results = getData();
+ results = results.stream().filter(data ->
isValidData(data)).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(results)) {
+ return;
+ }
getType(results).executor(results);
}
+
+ private boolean isValidData(final Object data) {
+ if (data instanceof URIRegisterDTO) {
+ URIRegisterDTO uriRegisterDTO = (URIRegisterDTO) data;
+ return Objects.nonNull(uriRegisterDTO.getPort())
+ && StringUtils.isNoneBlank(uriRegisterDTO.getAppName(),
uriRegisterDTO.getHost());
+ }
+ if (data instanceof MetaDataRegisterDTO) {
+ MetaDataRegisterDTO metaDataRegisterDTO = (MetaDataRegisterDTO)
data;
+ return Objects.nonNull(metaDataRegisterDTO.getPort())
+ &&
StringUtils.isNoneBlank(metaDataRegisterDTO.getAppName(),
+ metaDataRegisterDTO.getHost(),
+ metaDataRegisterDTO.getPath(),
+ metaDataRegisterDTO.getRuleName(),
+ metaDataRegisterDTO.getRpcType());
+ }
+ return true;
+ }
private ExecutorSubscriber getType(final List<DataTypeParent> list) {
- if (list == null || list.isEmpty()) {
- return null;
- }
DataTypeParent result = list.get(0);
return subscribers.get(result.getType());
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
index 702c208..27b50a1 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
@@ -23,7 +23,6 @@ import org.apache.shenyu.register.common.dto.URIRegisterDTO;
import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
import org.apache.shenyu.register.common.type.DataType;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -33,9 +32,9 @@ import java.util.stream.Collectors;
* The type Uri register executor subscriber.
*/
public class URIRegisterExecutorSubscriber implements
ExecutorTypeSubscriber<URIRegisterDTO> {
-
+
private final Map<String, ShenyuClientRegisterServiceFactory>
shenyuClientRegisterService;
-
+
/**
* Instantiates a new Uri register executor subscriber.
*
@@ -44,23 +43,17 @@ public class URIRegisterExecutorSubscriber implements
ExecutorTypeSubscriber<URI
public URIRegisterExecutorSubscriber(final Map<String,
ShenyuClientRegisterServiceFactory> shenyuClientRegisterService) {
this.shenyuClientRegisterService = shenyuClientRegisterService;
}
-
+
@Override
public DataType getType() {
return DataType.URI;
}
-
+
@Override
public void executor(final Collection<URIRegisterDTO> dataList) {
Map<String, List<URIRegisterDTO>> listMap =
dataList.stream().collect(Collectors.groupingBy(URIRegisterDTO::getContextPath));
- listMap.forEach((contextPath, dtoList) -> {
- List<String> uriList = new ArrayList<>();
- dataList.forEach(uriRegisterDTO -> {
- if (uriRegisterDTO.getHost() != null &&
uriRegisterDTO.getPort() != null) {
- uriList.add(String.join(":", uriRegisterDTO.getHost(),
uriRegisterDTO.getPort().toString()));
- }
- });
-
shenyuClientRegisterService.get(Constants.DEFAULT.toLowerCase()).registerURI(contextPath,
uriList);
- });
+ listMap.forEach((contextPath, dtoList) ->
shenyuClientRegisterService.get(Constants.DEFAULT.toLowerCase())
+ .registerUri(contextPath, dtoList.stream()
+ .map(s -> String.join(":", s.getHost(),
s.getPort().toString())).collect(Collectors.toList())));
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
index 7e3bd3a..4045a55 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
@@ -67,7 +67,7 @@ public abstract class AbstractShenyuClientRegisterServiceImpl
implements ShenyuC
protected abstract void handlerRule(String selectorId, MetaDataRegisterDTO
metaDataDTO, MetaDataDO exist);
@Override
- public String registerURI(final String contextPath, final List<String>
uriList) {
+ public String registerUri(final String contextPath, final List<String>
uriList) {
return null;
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
index 4a77702..8289407 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
@@ -66,7 +66,7 @@ public class ShenyuClientRegisterDefaultServiceImpl extends
AbstractShenyuClient
}
@Override
- public String registerURI(final String contextPath, final List<String>
uriList) {
+ public String registerUri(final String contextPath, final List<String>
uriList) {
SelectorDO selector = selectorService.findByName(contextPath);
SelectorData selectorData = selectorService.buildByName(contextPath);
PluginDO pluginDO = pluginMapper.selectById(selector.getPluginId());
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
index c19bfcc..cf74f24 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
@@ -37,9 +37,9 @@ public interface ShenyuClientRegisterServiceFactory {
/**
* mvc uri upstream update.
*
- * @param contextPath context paht
+ * @param contextPath context path
* @param uriList uri list
* @return the string
*/
- String registerURI(String contextPath, List<String> uriList);
+ String registerUri(String contextPath, List<String> uriList);
}