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 2021/03/20 07:25:45 UTC
[servicecomb-java-chassis] branch master updated: [SCB-2225]
zero-config ignore different app's register request when disable cross app
(#2303)
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 a4d9b84 [SCB-2225] zero-config ignore different app's register request when disable cross app (#2303)
a4d9b84 is described below
commit a4d9b84c51561a427e3f0a99622679a87f149b43
Author: wujimin <wu...@huawei.com>
AuthorDate: Sat Mar 20 15:25:38 2021 +0800
[SCB-2225] zero-config ignore different app's register request when disable cross app (#2303)
---
.../registry/api/registry/Microservice.java | 5 +++
.../registry/api/registry/MicroserviceFactory.java | 7 +---
.../registry/definition/DefinitionConst.java | 1 +
...very.java => AbstractLightweightDiscovery.java} | 4 +-
...n.java => AbstractLightweightRegistration.java} | 4 +-
.../registry/lightweight/RegisterRequest.java | 22 ++++++++++
.../servicecomb/registry/lightweight/Self.java | 28 +++++++++----
.../api/registry/TestMicroserviceFactory.java | 22 ++++------
.../org/apache/servicecomb/zeroconfig/Config.java | 48 ++++++++++++++++++++++
.../apache/servicecomb/zeroconfig/Multicast.java | 21 ++++------
.../zeroconfig/ZeroConfigDiscovery.java | 14 +++----
.../zeroconfig/ZeroConfigRegistration.java | 13 +++---
.../servicecomb/zeroconfig/ZeroConfigServer.java | 16 +++++++-
13 files changed, 145 insertions(+), 60 deletions(-)
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/Microservice.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/Microservice.java
index a682143..4c003f0 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/Microservice.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/Microservice.java
@@ -266,4 +266,9 @@ public class Microservice {
public void setThirdPartyService(boolean thirdPartyService) {
this.thirdPartyService = thirdPartyService;
}
+
+ // Whether to allow cross-app calls to me
+ public boolean allowCrossApp() {
+ return Boolean.parseBoolean(properties.get(DefinitionConst.CONFIG_ALLOW_CROSS_APP_KEY));
+ }
}
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceFactory.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceFactory.java
index 431e728..1e2ba3a 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceFactory.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceFactory.java
@@ -29,7 +29,6 @@ import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.ConfigUtil;
import org.apache.servicecomb.registry.config.ConfigurePropertyUtils;
import org.apache.servicecomb.registry.config.MicroservicePropertiesLoader;
-import org.apache.servicecomb.registry.definition.DefinitionConst;
import org.apache.servicecomb.registry.version.Version;
public class MicroserviceFactory {
@@ -78,15 +77,11 @@ public class MicroserviceFactory {
microservice.setEnvironment(BootStrapProperties.readServiceEnvironment(configuration));
// set alias name when allow cross app
- if (allowCrossApp(propertiesMap)) {
+ if (microservice.allowCrossApp()) {
microservice.setAlias(Microservice.generateAbsoluteMicroserviceName(microservice.getAppId(),
microservice.getServiceName()));
}
return microservice;
}
-
- private boolean allowCrossApp(Map<String, String> propertiesMap) {
- return Boolean.parseBoolean(propertiesMap.get(DefinitionConst.CONFIG_ALLOW_CROSS_APP_KEY));
- }
}
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/definition/DefinitionConst.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/definition/DefinitionConst.java
index 5735927..deedacd 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/definition/DefinitionConst.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/definition/DefinitionConst.java
@@ -18,6 +18,7 @@
package org.apache.servicecomb.registry.definition;
public interface DefinitionConst {
+ // Whether to allow cross-app calls to me
String CONFIG_ALLOW_CROSS_APP_KEY = "allowCrossApp";
String DEFAULT_STAGE = "prod";
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightDiscovery.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
similarity index 92%
rename from service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightDiscovery.java
rename to service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
index d5e2ceb..16abd0c 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightDiscovery.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
@@ -28,10 +28,10 @@ import org.apache.servicecomb.registry.api.registry.MicroserviceInstances;
import org.apache.servicecomb.registry.lightweight.store.MicroserviceStore;
import org.apache.servicecomb.registry.lightweight.store.Store;
-public abstract class AbstractLightDiscovery implements Discovery {
+public abstract class AbstractLightweightDiscovery implements Discovery {
protected Store store;
- public AbstractLightDiscovery(Store store) {
+ public AbstractLightweightDiscovery(Store store) {
this.store = store;
}
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightRegistration.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightRegistration.java
similarity index 91%
rename from service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightRegistration.java
rename to service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightRegistration.java
index c1dd1a8..179ca8f 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightRegistration.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightRegistration.java
@@ -26,11 +26,11 @@ import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
import org.springframework.beans.factory.annotation.Autowired;
-public abstract class AbstractLightRegistration implements Registration {
+public abstract class AbstractLightweightRegistration implements Registration {
protected Self self;
@Autowired
- public AbstractLightRegistration setSelf(Self self) {
+ public AbstractLightweightRegistration setSelf(Self self) {
this.self = self;
return this;
}
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/RegisterRequest.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/RegisterRequest.java
index 1b438bf..28356f3 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/RegisterRequest.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/RegisterRequest.java
@@ -24,8 +24,12 @@ import org.apache.servicecomb.core.invocation.endpoint.EndpointCacheUtils;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
public class RegisterRequest {
+ private String appId;
+
private String serviceId;
+ private boolean crossApp;
+
private String schemasSummary;
private String instanceId;
@@ -34,6 +38,15 @@ public class RegisterRequest {
private List<String> endpoints;
+ public String getAppId() {
+ return appId;
+ }
+
+ public RegisterRequest setAppId(String appId) {
+ this.appId = appId;
+ return this;
+ }
+
public String getServiceId() {
return serviceId;
}
@@ -43,6 +56,15 @@ public class RegisterRequest {
return this;
}
+ public boolean isCrossApp() {
+ return crossApp;
+ }
+
+ public RegisterRequest setCrossApp(boolean crossApp) {
+ this.crossApp = crossApp;
+ return this;
+ }
+
public String getSchemasSummary() {
return schemasSummary;
}
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/Self.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/Self.java
index 395bdcc..f8656a7 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/Self.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/Self.java
@@ -22,6 +22,7 @@ import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.configuration.AbstractConfiguration;
+import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceFactory;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
@@ -33,9 +34,12 @@ import com.google.common.annotations.VisibleForTesting;
import com.netflix.config.ConfigurationManager;
@Component
-public class Self implements InitializingBean {
+public class Self implements InitializingBean, BootListener {
private Microservice microservice;
+ // Whether to allow cross-app calls to me
+ private boolean crossApp;
+
private String schemasSummary;
private MicroserviceInstance instance;
@@ -49,8 +53,7 @@ public class Self implements InitializingBean {
@VisibleForTesting
public Self init(AbstractConfiguration configuration) {
- MicroserviceFactory factory = new MicroserviceFactory();
- microservice = factory.create(configuration);
+ microservice = new MicroserviceFactory().create(configuration);
microservice.serviceId(String.format("%s/%s/%s/%s",
microservice.getEnvironment(),
microservice.getAppId(),
@@ -69,6 +72,17 @@ public class Self implements InitializingBean {
return this;
}
+ @Override
+ public int getOrder() {
+ return Integer.MAX_VALUE;
+ }
+
+ @Override
+ public void onBeforeRegistry(BootEvent event) {
+ schemasSummary = calcSchemasSummary();
+ crossApp = microservice.allowCrossApp();
+ }
+
public Microservice getMicroservice() {
return microservice;
}
@@ -114,10 +128,6 @@ public class Self implements InitializingBean {
}
public String getSchemasSummary() {
- if (schemasSummary == null) {
- schemasSummary = calcSchemasSummary();
- }
-
return schemasSummary;
}
@@ -131,8 +141,10 @@ public class Self implements InitializingBean {
public RegisterRequest buildRegisterRequest() {
return createRegisterRequest()
+ .setAppId(microservice.getAppId())
.setServiceId(microservice.getServiceId())
- .setSchemasSummary(getSchemasSummary())
+ .setCrossApp(crossApp)
+ .setSchemasSummary(schemasSummary)
.setInstanceId(instance.getInstanceId())
.setStatus(instance.getStatus())
.setEndpoints(instance.getEndpoints());
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestMicroserviceFactory.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestMicroserviceFactory.java
index c3de510..d92064b 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestMicroserviceFactory.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestMicroserviceFactory.java
@@ -19,9 +19,6 @@ package org.apache.servicecomb.serviceregistry.api.registry;
import static org.apache.servicecomb.registry.definition.DefinitionConst.CONFIG_ALLOW_CROSS_APP_KEY;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.commons.configuration.Configuration;
import org.apache.servicecomb.config.BootStrapProperties;
import org.apache.servicecomb.config.ConfigUtil;
@@ -32,26 +29,23 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import mockit.Deencapsulation;
-
public class TestMicroserviceFactory {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void testAllowCrossApp() {
- MicroserviceFactory factory = new MicroserviceFactory();
- Map<String, String> propertiesMap = new HashMap<>();
- Assert.assertFalse(Deencapsulation.invoke(factory, "allowCrossApp", propertiesMap));
+ Microservice microservice = new Microservice();
+ Assert.assertFalse(microservice.allowCrossApp());
- propertiesMap.put(CONFIG_ALLOW_CROSS_APP_KEY, "true");
- Assert.assertTrue(Deencapsulation.invoke(factory, "allowCrossApp", propertiesMap));
+ microservice.getProperties().put(CONFIG_ALLOW_CROSS_APP_KEY, "true");
+ Assert.assertTrue(microservice.allowCrossApp());
- propertiesMap.put(CONFIG_ALLOW_CROSS_APP_KEY, "false");
- Assert.assertFalse(Deencapsulation.invoke(factory, "allowCrossApp", propertiesMap));
+ microservice.getProperties().put(CONFIG_ALLOW_CROSS_APP_KEY, "false");
+ Assert.assertFalse(microservice.allowCrossApp());
- propertiesMap.put(CONFIG_ALLOW_CROSS_APP_KEY, "asfas");
- Assert.assertFalse(Deencapsulation.invoke(factory, "allowCrossApp", propertiesMap));
+ microservice.getProperties().put(CONFIG_ALLOW_CROSS_APP_KEY, "asfas");
+ Assert.assertFalse(microservice.allowCrossApp());
}
@Test
diff --git a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Config.java b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Config.java
new file mode 100644
index 0000000..e82761b
--- /dev/null
+++ b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Config.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.zeroconfig;
+
+import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.CFG_ADDRESS;
+import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.CFG_ENABLED;
+import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.CFG_GROUP;
+import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.DEFAULT_ADDRESS;
+import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.DEFAULT_GROUP;
+
+import org.apache.servicecomb.config.DynamicProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Config {
+ private final DynamicProperties dynamicProperties;
+
+ public Config(DynamicProperties dynamicProperties) {
+ this.dynamicProperties = dynamicProperties;
+ }
+
+ public boolean isEnabled() {
+ return dynamicProperties.getBooleanProperty(CFG_ENABLED, true);
+ }
+
+ public String getAddress() {
+ return dynamicProperties.getStringProperty(CFG_ADDRESS, DEFAULT_ADDRESS);
+ }
+
+ // (224.0.0.0, 239.255.255.255]
+ public String getGroup() {
+ return dynamicProperties.getStringProperty(CFG_GROUP, DEFAULT_GROUP);
+ }
+}
diff --git a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Multicast.java b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Multicast.java
index 3b6eae9..f209e81 100644
--- a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Multicast.java
+++ b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/Multicast.java
@@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.google.common.net.HostAndPort;
-import com.netflix.config.DynamicPropertyFactory;
import io.vertx.core.json.jackson.DatabindCodec;
@@ -49,9 +48,9 @@ public class Multicast {
private final DatagramPacket recvPacket = new DatagramPacket(recvBuffer, recvBuffer.length);
- public Multicast() throws IOException {
- this.bindAddress = initBindAddress();
- this.group = initGroup();
+ public Multicast(Config config) throws IOException {
+ this.bindAddress = initBindAddress(config);
+ this.group = initGroup(config);
LOGGER.info("zero config, address: {}", bindAddress);
LOGGER.info("zero config, group: {}", group);
@@ -60,18 +59,14 @@ public class Multicast {
this.multicastSocket.setSoTimeout((int) TimeUnit.SECONDS.toMillis(5));
}
- private InetSocketAddress initBindAddress() {
- HostAndPort hostAndPort = HostAndPort
- .fromString(readString(ZeroConfigConst.CFG_ADDRESS, ZeroConfigConst.DEFAULT_ADDRESS));
+ @SuppressWarnings("UnstableApiUsage")
+ private InetSocketAddress initBindAddress(Config config) {
+ HostAndPort hostAndPort = HostAndPort.fromString(config.getAddress());
return new InetSocketAddress(hostAndPort.getHost(), hostAndPort.getPort());
}
- private InetAddress initGroup() throws UnknownHostException {
- return InetAddress.getByName(readString(ZeroConfigConst.CFG_GROUP, ZeroConfigConst.DEFAULT_GROUP));
- }
-
- private String readString(String key, String defaultValue) {
- return DynamicPropertyFactory.getInstance().getStringProperty(key, defaultValue).get();
+ private InetAddress initGroup(Config config) throws UnknownHostException {
+ return InetAddress.getByName(config.getGroup());
}
public <T> void send(MessageType type, T body) throws IOException {
diff --git a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigDiscovery.java b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigDiscovery.java
index 4cd5738..605e854 100644
--- a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigDiscovery.java
+++ b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigDiscovery.java
@@ -16,7 +16,6 @@
*/
package org.apache.servicecomb.zeroconfig;
-import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.CFG_ENABLED;
import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.ORDER;
import java.util.concurrent.Executors;
@@ -24,24 +23,25 @@ import java.util.concurrent.TimeUnit;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.consumer.AppManager;
-import org.apache.servicecomb.registry.lightweight.AbstractLightDiscovery;
-import org.apache.servicecomb.registry.lightweight.DiscoveryClient;
+import org.apache.servicecomb.registry.lightweight.AbstractLightweightDiscovery;
import org.apache.servicecomb.registry.lightweight.SchemaChangedEvent;
import org.apache.servicecomb.registry.lightweight.store.Store;
import org.springframework.stereotype.Component;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-import com.netflix.config.DynamicPropertyFactory;
@Component
-public class ZeroConfigDiscovery extends AbstractLightDiscovery {
+public class ZeroConfigDiscovery extends AbstractLightweightDiscovery {
private static final String NAME = "zero-config discovery";
+ private final Config config;
+
private final AppManager appManager;
- public ZeroConfigDiscovery(Store store, DiscoveryClient discoveryClient, EventBus eventBus, AppManager appManager) {
+ public ZeroConfigDiscovery(Config config, Store store, EventBus eventBus, AppManager appManager) {
super(store);
+ this.config = config;
this.appManager = appManager;
Executors
@@ -68,6 +68,6 @@ public class ZeroConfigDiscovery extends AbstractLightDiscovery {
@Override
public boolean enabled() {
- return DynamicPropertyFactory.getInstance().getBooleanProperty(CFG_ENABLED, true).get();
+ return config.isEnabled();
}
}
diff --git a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigRegistration.java b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigRegistration.java
index 134dc08..ec9f057 100644
--- a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigRegistration.java
+++ b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigRegistration.java
@@ -16,7 +16,6 @@
*/
package org.apache.servicecomb.zeroconfig;
-import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.CFG_ENABLED;
import static org.apache.servicecomb.zeroconfig.ZeroConfigConst.ORDER;
import java.util.concurrent.Executors;
@@ -24,7 +23,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.servicecomb.registry.api.event.MicroserviceInstanceRegisteredEvent;
-import org.apache.servicecomb.registry.lightweight.AbstractLightRegistration;
+import org.apache.servicecomb.registry.lightweight.AbstractLightweightRegistration;
import org.apache.servicecomb.registry.lightweight.RegisterInstanceEvent;
import org.apache.servicecomb.registry.lightweight.Self;
import org.slf4j.Logger;
@@ -33,14 +32,15 @@ import org.springframework.stereotype.Component;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-import com.netflix.config.DynamicPropertyFactory;
@Component
-public class ZeroConfigRegistration extends AbstractLightRegistration {
+public class ZeroConfigRegistration extends AbstractLightweightRegistration {
private static final Logger LOGGER = LoggerFactory.getLogger(ZeroConfigRegistration.class);
private static final String NAME = "zero-config registration";
+ private final Config config;
+
private final Multicast multicast;
private final Self self;
@@ -50,7 +50,8 @@ public class ZeroConfigRegistration extends AbstractLightRegistration {
private final ScheduledExecutorService executorService = Executors
.newSingleThreadScheduledExecutor(runnable -> new Thread(runnable, "zero-config-register"));
- public ZeroConfigRegistration(Multicast multicast, Self self, EventBus eventBus) {
+ public ZeroConfigRegistration(Config config, Multicast multicast, Self self, EventBus eventBus) {
+ this.config = config;
this.multicast = multicast;
this.self = self;
this.eventBus = eventBus;
@@ -77,7 +78,7 @@ public class ZeroConfigRegistration extends AbstractLightRegistration {
@Override
public boolean enabled() {
- return DynamicPropertyFactory.getInstance().getBooleanProperty(CFG_ENABLED, true).get();
+ return config.isEnabled();
}
@Override
diff --git a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigServer.java b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigServer.java
index 7d0e56d..17ae8b2 100644
--- a/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigServer.java
+++ b/service-registry/registry-zero-config/src/main/java/org/apache/servicecomb/zeroconfig/ZeroConfigServer.java
@@ -21,11 +21,14 @@ import java.net.SocketTimeoutException;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
+import org.apache.servicecomb.registry.lightweight.RegisterRequest;
import org.apache.servicecomb.registry.lightweight.RegistryServerService;
+import org.apache.servicecomb.registry.lightweight.Self;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@@ -34,6 +37,8 @@ import org.springframework.stereotype.Component;
public class ZeroConfigServer {
private static final Logger LOGGER = LoggerFactory.getLogger(ZeroConfigServer.class);
+ private final Self self;
+
private final Multicast multicast;
private final RegistryServerService registryServerService;
@@ -43,11 +48,12 @@ public class ZeroConfigServer {
private final Executor taskExecutor = Executors
.newSingleThreadExecutor(runnable -> new Thread(runnable, "zero-config-server-task"));
- public ZeroConfigServer(Multicast multicast, RegistryServerService registryServerService) {
+ public ZeroConfigServer(Self self, Multicast multicast, RegistryServerService registryServerService) {
+ this.self = self;
this.multicast = multicast;
this.registryServerService = registryServerService;
- addMessageProcessor(MessageType.REGISTER, registryServerService::register);
+ addMessageProcessor(MessageType.REGISTER, this::register);
addMessageProcessor(MessageType.UNREGISTER, registryServerService::unregister);
Executors
@@ -55,6 +61,12 @@ public class ZeroConfigServer {
.execute(this::recv);
}
+ private void register(RegisterRequest request) {
+ if (request.isCrossApp() || Objects.equals(request.getAppId(), self.getAppId())) {
+ registryServerService.register(request);
+ }
+ }
+
private <T> void addMessageProcessor(MessageType messageType, Consumer<T> messageProcessor) {
messageProcessors.put(messageType, messageProcessor);
}