You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/05/28 01:17:13 UTC
[servicecomb-java-chassis] branch master updated: [SCB-1941]
MicroserviceMeta only need to has consumer or producer handlers, not both
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 94002f8 [SCB-1941] MicroserviceMeta only need to has consumer or producer handlers, not both
94002f8 is described below
commit 94002f84ca0817efce37d757367dc4666222462f
Author: wujimin <wu...@huawei.com>
AuthorDate: Wed May 27 15:36:27 2020 +0800
[SCB-1941] MicroserviceMeta only need to has consumer or producer handlers, not both
---
.../org/apache/servicecomb/core/Invocation.java | 3 +--
.../org/apache/servicecomb/core/SCBEngine.java | 5 ++---
.../core/definition/MicroserviceMeta.java | 25 ++++++++--------------
.../core/definition/ServiceRegistryListener.java | 9 ++------
4 files changed, 14 insertions(+), 28 deletions(-)
diff --git a/core/src/main/java/org/apache/servicecomb/core/Invocation.java b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
index e390e18..55bdbf3 100644
--- a/core/src/main/java/org/apache/servicecomb/core/Invocation.java
+++ b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
@@ -178,8 +178,7 @@ public class Invocation extends SwaggerInvocation {
}
public List<Handler> getHandlerChain() {
- return (InvocationType.CONSUMER.equals(invocationType)) ? schemaMeta.getMicroserviceMeta().getConsumerHandlerChain()
- : schemaMeta.getMicroserviceMeta().getProviderHandlerChain();
+ return schemaMeta.getMicroserviceMeta().getHandlerChain();
}
public Executor getResponseExecutor() {
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index ac8b860..06a0796 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -354,10 +354,9 @@ public class SCBEngine {
private void createProducerMicroserviceMeta() {
String microserviceName = RegistrationManager.INSTANCE.getMicroservice().getServiceName();
- List<Handler> consumerHandlerChain = consumerHandlerManager.getOrCreate(microserviceName);
- List<Handler> producerHandlerChain = producerHandlerManager.getOrCreate(microserviceName);
- producerMicroserviceMeta = new MicroserviceMeta(this, microserviceName, consumerHandlerChain, producerHandlerChain, false);
+ producerMicroserviceMeta = new MicroserviceMeta(this, microserviceName, false);
+ producerMicroserviceMeta.setHandlerChain(producerHandlerManager.getOrCreate(microserviceName));
producerMicroserviceMeta.setMicroserviceVersionsMeta(new MicroserviceVersionsMeta(this, microserviceName));
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMeta.java b/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMeta.java
index e782b19..74568e2 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMeta.java
@@ -62,11 +62,9 @@ public class MicroserviceMeta {
// key is OperationMeta.getMicroserviceQualifiedName()
private Map<String, OperationMeta> operationMetas = new HashMap<>();
- private boolean consumer = true;
+ private boolean consumer;
- private List<Handler> consumerHandlerChain;
-
- private List<Handler> providerHandlerChain;
+ private List<Handler> handlerChain = Collections.singletonList((invocation, ar) -> ar.success(null));
// providerQpsFlowControlHandler is a temporary field, only for internal usage
private Handler providerQpsFlowControlHandler;
@@ -76,17 +74,13 @@ public class MicroserviceMeta {
private VendorExtensions vendorExtensions = new VendorExtensions();
- public MicroserviceMeta(SCBEngine scbEngine, String microserviceName, List<Handler> consumerHandlerChain,
- List<Handler> providerHandlerChain, boolean consumer) {
+ public MicroserviceMeta(SCBEngine scbEngine, String microserviceName, boolean consumer) {
this.scbEngine = scbEngine;
MicroserviceNameParser parser = scbEngine.parseMicroserviceName(microserviceName);
this.appId = parser.getAppId();
this.shortName = parser.getShortName();
this.microserviceName = parser.getMicroserviceName();
-
- this.consumerHandlerChain = consumerHandlerChain;
- this.providerHandlerChain = providerHandlerChain;
- this.consumer = consumer;
+ this.consumer = consumer;
}
public MicroserviceConfig getMicroserviceConfig() {
@@ -195,12 +189,12 @@ public class MicroserviceMeta {
return vendorExtensions.get(key);
}
- public List<Handler> getConsumerHandlerChain() {
- return consumerHandlerChain;
+ public List<Handler> getHandlerChain() {
+ return handlerChain;
}
- public List<Handler> getProviderHandlerChain() {
- return providerHandlerChain;
+ public void setHandlerChain(List<Handler> handlerChain) {
+ this.handlerChain = handlerChain;
}
/**
@@ -212,8 +206,7 @@ public class MicroserviceMeta {
return providerQpsFlowControlHandler;
}
- List<Handler> providerHandlerChain = getProviderHandlerChain();
- for (Handler handler : providerHandlerChain) {
+ for (Handler handler : handlerChain) {
// matching by class name is more or less better than importing an extra maven dependency
if ("org.apache.servicecomb.qps.ProviderQpsFlowControlHandler".equals(handler.getClass().getName())) {
providerQpsFlowControlHandler = handler;
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/ServiceRegistryListener.java b/core/src/main/java/org/apache/servicecomb/core/definition/ServiceRegistryListener.java
index a4ca35a..24ac745 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/ServiceRegistryListener.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/ServiceRegistryListener.java
@@ -21,9 +21,6 @@ import static org.apache.servicecomb.core.definition.CoreMetaUtils.CORE_MICROSER
import static org.apache.servicecomb.core.definition.CoreMetaUtils.CORE_MICROSERVICE_VERSIONS_META;
import static org.apache.servicecomb.core.definition.CoreMetaUtils.getMicroserviceVersionsMeta;
-import java.util.List;
-
-import org.apache.servicecomb.core.Handler;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.foundation.common.event.EnableExceptionPropagation;
import org.apache.servicecomb.foundation.common.event.SubscriberOrder;
@@ -77,11 +74,9 @@ public class ServiceRegistryListener {
// not shortName, to support cross app invoke
String microserviceName = microserviceVersion.getMicroserviceName();
- List<Handler> consumerHandlerChain = scbEngine.getConsumerHandlerManager().getOrCreate(microserviceName);
- List<Handler> producerHandlerChain = scbEngine.getProducerHandlerManager().getOrCreate(microserviceName);
- MicroserviceMeta microserviceMeta = new MicroserviceMeta(scbEngine, microserviceName,
- consumerHandlerChain, producerHandlerChain, true);
+ MicroserviceMeta microserviceMeta = new MicroserviceMeta(scbEngine, microserviceName, true);
+ microserviceMeta.setHandlerChain(scbEngine.getConsumerHandlerManager().getOrCreate(microserviceName));
MicroserviceVersions microserviceVersions = microserviceVersion.getMicroserviceVersions();
microserviceMeta.setMicroserviceVersionsMeta(getMicroserviceVersionsMeta(microserviceVersions));