fix[lua]: read lua in one protocol

This commit is contained in:
sun
2024-01-12 19:25:52 +08:00
parent b35b082005
commit 3bf273acea
9 changed files with 24 additions and 63 deletions
@@ -58,20 +58,15 @@ public class ConfigManager implements IConfigManager {
public void initRegistry() {
// 通过protocol,写入provider的module的id和version
var providerConfig = localConfig.getProvider();
if (Objects.nonNull(providerConfig) && CollectionUtils.isNotEmpty(providerConfig.getProviders())) {
if (providerConfig != null && CollectionUtils.isNotEmpty(providerConfig.getProviders())) {
// 服务提供者名字Set列表
var providerSet = new HashSet<String>();
// 检查并且替换配置文件中的ProtocolModule
for (var providerModule : providerConfig.getProviders()) {
var provider = providerModule.getProvider();
var protocolModuleName = providerModule.getProtocolModule().getName();
// 从protocol中读值
var protocolModule = ProtocolManager.moduleByModuleName(protocolModuleName);
AssertionUtils.isTrue(protocolModule != null, "服务提供者[name:{}]在协议文件中不存在", protocolModuleName);
providerModule.setProtocolModule(protocolModule);
var providerName = StringUtils.joinWith(StringUtils.HYPHEN, protocolModuleName, provider);
AssertionUtils.isTrue(providerSet.add(providerName), "服务提供者[name:{}]重复消费协议模块[provider:{}]", protocolModuleName, provider);
var protocolModule = ProtocolManager.moduleByModuleName(provider);
AssertionUtils.isTrue(protocolModule != null, "provider:[{}] does not exist in the protocol manager", provider);
AssertionUtils.isTrue(providerSet.add(provider), "provider:[{}] plicate Consumption Agreement module [provider:{}]", protocolModuleName, provider);
}
}
@@ -79,17 +74,10 @@ public class ConfigManager implements IConfigManager {
if (Objects.nonNull(consumerConfig) && CollectionUtils.isNotEmpty(consumerConfig.getConsumers())) {
// 服务消费者名字Set列表
var consumerSet = new HashSet<String>();
var protocolModuleSet = new HashSet<String>();
for (var consumerModule : consumerConfig.getConsumers()) {
// 提供的接口实现 提供者名
var consumer = consumerModule.getConsumer();
var protocolModuleName = consumerModule.getProtocolModule().getName();
var protocolModule = ProtocolManager.moduleByModuleName(protocolModuleName);
AssertionUtils.isTrue(protocolModule != null, "服务消费者[name:{}]在协议文件中不存在", protocolModuleName);
consumerModule.setProtocolModule(protocolModule);
AssertionUtils.isTrue(protocolModuleSet.add(protocolModuleName), "服务消费者[name:{}]重复消费了协议模块", protocolModuleName);
var consumerName = StringUtils.joinWith(StringUtils.HYPHEN, protocolModuleName, consumer);
AssertionUtils.isTrue(consumerSet.add(consumerName), "服务消费者[name:{}]重复消费了协议模块[consumer:{}]", protocolModuleName, consumer);
AssertionUtils.isTrue(consumerSet.add(consumer), "服务消费者[name:{}]重复消费了协议模块[consumer:{}]", protocolModuleName, consumer);
}
}
@@ -21,30 +21,17 @@ import java.util.Objects;
*/
public class ConsumerModule {
private ProtocolModule protocolModule;
// 负载均衡方式
private String loadBalancer;
// 消费哪个provider
private String consumer;
public ConsumerModule(ProtocolModule protocolModule, String loadBalancer, String consumer) {
this.protocolModule = protocolModule;
public ConsumerModule(String loadBalancer, String consumer) {
this.consumer = consumer;
this.loadBalancer = loadBalancer;
}
public ConsumerModule(String protocolModule, String loadBalancer, String consumer) {
this.protocolModule = new ProtocolModule((byte) 0, protocolModule);
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;
}
@@ -61,14 +48,6 @@ public class ConsumerModule {
this.loadBalancer = loadBalancer;
}
public ProtocolModule getProtocolModule() {
return protocolModule;
}
public void setProtocolModule(ProtocolModule protocolModule) {
this.protocolModule = protocolModule;
}
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -78,11 +57,11 @@ public class ConsumerModule {
return false;
}
ConsumerModule that = (ConsumerModule) o;
return Objects.equals(protocolModule, that.protocolModule) && Objects.equals(consumer, that.consumer);
return Objects.equals(consumer, that.consumer);
}
@Override
public int hashCode() {
return Objects.hash(protocolModule, loadBalancer, consumer);
return Objects.hash(loadBalancer, consumer);
}
}
@@ -24,21 +24,25 @@ public class ProviderModule {
/**
* 模块id和模块名
*/
private ProtocolModule protocolModule;
private String protocolModule;
/**
* 提供者名字
*/
private String provider;
public ProviderModule(ProtocolModule protocolModule, String provider) {
public ProviderModule(String protocolModule, String provider) {
this.protocolModule = protocolModule;
this.provider = provider;
}
public ProviderModule(String protocolModule, String provider) {
this.protocolModule = new ProtocolModule((byte) 0, protocolModule);
this.provider = provider;
public String getProtocolModule() {
return protocolModule;
}
public void setProtocolModule(String protocolModule) {
this.protocolModule = protocolModule;
}
public String getProvider() {
@@ -49,14 +53,6 @@ public class ProviderModule {
this.provider = provider;
}
public ProtocolModule getProtocolModule() {
return protocolModule;
}
public void setProtocolModule(ProtocolModule protocolModule) {
this.protocolModule = protocolModule;
}
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -52,7 +52,7 @@ public class RegisterVO {
return false;
}
for (var provider : providerVO.getProviderConfig().getProviders()) {
if (consumerVO.getConsumerConfig().getConsumers().stream().anyMatch(it -> it.matchProvider(provider))) {
if (consumerVO.getConsumerConfig().getConsumers().stream().anyMatch(it -> it.getConsumer().equals(provider.getProvider()))) {
return true;
}
}
@@ -119,7 +119,7 @@ public class RegisterVO {
var modules = Arrays.stream(moduleSplits)
.map(it -> it.trim())
.map(it -> it.split(StringUtils.HYPHEN))
.map(it -> new ConsumerModule(new ProtocolModule(Byte.parseByte(it[0]), it[1]), it[2], it[3]))
.map(it -> new ConsumerModule(it[0], it[1]))
.toList();
return modules;
}
@@ -166,7 +166,7 @@ public class RegisterVO {
builder.append(StringUtils.SPACE).append(StringUtils.VERTICAL_BAR).append(StringUtils.SPACE);
var consumerModules = consumerConfig.getConsumers().stream()
.map(it -> StringUtils.joinWith(StringUtils.HYPHEN, it.getProtocolModule().getId(), it.getProtocolModule().getName(), it.getLoadBalancer(), it.getConsumer()))
.map(it -> StringUtils.joinWith(StringUtils.HYPHEN, it.getLoadBalancer(), it.getConsumer()))
.toList();
// 服务消费者模块信息列表
@@ -218,7 +218,6 @@ public class NetDefinitionParser implements BeanDefinitionParser {
var clazz = ConsumerModule.class;
var builder = BeanDefinitionBuilder.rootBeanDefinition(clazz);
builder.addConstructorArgValue(environment.resolvePlaceholders(addressElement.getAttribute("protocol-module")));
builder.addConstructorArgValue(environment.resolvePlaceholders(addressElement.getAttribute("load-balancer")));
builder.addConstructorArgValue(environment.resolvePlaceholders(addressElement.getAttribute("consumer")));
-1
View File
@@ -43,7 +43,6 @@
</xsd:complexType>
<xsd:complexType name="consumerAttributeType">
<xsd:attribute name="protocol-module" type="xsd:string" use="required"/>
<xsd:attribute name="load-balancer" type="xsd:string" default="consistent-hash"/>
<xsd:attribute name="consumer" type="xsd:string" use="required"/>
</xsd:complexType>
@@ -24,9 +24,9 @@
<net:address name="firstZookeeper" url="127.0.0.1:2181"/>
</net:registry>
<!--1.声明自己是个消费者 2.指明自己可以消费的接口是providerTest中声明的接口 3.消费的接口是服务提供者是myProvider1提供的具体实现-->
<!--1.声明自己是个消费者 2.消费的接口是服务提供者是myProvider1提供的具体实现-->
<net:consumers>
<net:consumer protocol-module="providerTest" consumer="myProvider1"/>
<net:consumer consumer="myProvider1"/>
</net:consumers>
</net:config>
@@ -25,7 +25,7 @@
</net:registry>
<net:consumers>
<net:consumer protocol-module="providerTest" load-balancer="consistent-hash" consumer="myProvider1"/>
<net:consumer load-balancer="consistent-hash" consumer="myProvider1"/>
</net:consumers>
</net:config>
@@ -24,7 +24,7 @@
</net:registry>
<net:consumers>
<net:consumer protocol-module="providerTest" load-balancer="random" consumer="myProvider1"/>
<net:consumer load-balancer="random" consumer="myProvider1"/>
</net:consumers>
</net:config>