diff --git a/net/src/main/java/com/zfoo/net/config/manager/ConfigManager.java b/net/src/main/java/com/zfoo/net/config/manager/ConfigManager.java index 353dc226..2f049530 100644 --- a/net/src/main/java/com/zfoo/net/config/manager/ConfigManager.java +++ b/net/src/main/java/com/zfoo/net/config/manager/ConfigManager.java @@ -20,6 +20,7 @@ import com.zfoo.protocol.ProtocolManager; import com.zfoo.protocol.collection.CollectionUtils; import com.zfoo.protocol.registration.ProtocolModule; import com.zfoo.protocol.util.AssertionUtils; +import com.zfoo.protocol.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,8 +80,7 @@ public class ConfigManager implements IConfigManager { var consumerConfig = localConfig.getConsumer(); if (Objects.nonNull(consumerConfig) && CollectionUtils.isNotEmpty(consumerConfig.getConsumers())) { - var set = new HashSet(); - var protocolModuleSet = new HashSet(); + var protocolModuleSet = new HashSet(); for (var consumerModule : consumerConfig.getConsumers()) { // 提供的接口实现 提供者名 var consumer = consumerModule.getConsumer(); @@ -88,8 +88,7 @@ public class ConfigManager implements IConfigManager { var protocolModule = ProtocolManager.moduleByModuleName(protocolModuleName); AssertionUtils.isTrue(protocolModule != null, "服务消费者[name:{}]在协议文件中不存在", protocolModuleName); consumerModule.setProtocolModule(protocolModule); - AssertionUtils.isTrue(set.add(consumer), "服务消费者[name:{}]配置重复", consumer); - AssertionUtils.isTrue(protocolModuleSet.add(protocolModule), "服务消费者[name:{}]重复消费了协议模块{}", consumer, protocolModule); + AssertionUtils.isTrue(protocolModuleSet.add(StringUtils.joinWith(StringUtils.HYPHEN, protocolModuleName, consumer)), "服务消费者[name:{}]重复消费了协议模块{}", consumer, protocolModule); } } diff --git a/net/src/main/java/com/zfoo/net/config/model/ConsumerModule.java b/net/src/main/java/com/zfoo/net/config/model/ConsumerModule.java index f711144e..5dcc340c 100644 --- a/net/src/main/java/com/zfoo/net/config/model/ConsumerModule.java +++ b/net/src/main/java/com/zfoo/net/config/model/ConsumerModule.java @@ -41,6 +41,10 @@ public class ConsumerModule { this.consumer = consumer; this.loadBalancer = loadBalancer; } + + public boolean matchProvider(ProviderModule providerModule) { + return Objects.equals(protocolModule.getName(), providerModule.getProtocolModule().getName()) && Objects.equals(consumer, providerModule.getProvider()); + } public String getConsumer() { return consumer; diff --git a/net/src/main/java/com/zfoo/net/consumer/registry/RegisterVO.java b/net/src/main/java/com/zfoo/net/consumer/registry/RegisterVO.java index 3c22a3ee..ffaaee8c 100644 --- a/net/src/main/java/com/zfoo/net/consumer/registry/RegisterVO.java +++ b/net/src/main/java/com/zfoo/net/consumer/registry/RegisterVO.java @@ -54,7 +54,7 @@ public class RegisterVO { return false; } for (var provider : providerVO.getProviderConfig().getProviders()) { - if (consumerVO.getConsumerConfig().getConsumers().stream().anyMatch(it -> provider.getProvider().equals(it.getConsumer()))) { + if (consumerVO.getConsumerConfig().getConsumers().stream().anyMatch(it -> it.matchProvider(provider))) { return true; } }