diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java index 0a6816ba0..a4c523407 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java @@ -35,24 +35,23 @@ import org.springframework.util.CollectionUtils; /** * load balancer utils. * - *@author lepdou 2022-05-17 + * @author lepdou 2022-05-17 */ public class LoadBalancerUtils { - public static ServiceInstances transferServersToServiceInstances(Flux> servers) { - List instances = servers.toStream().flatMap(List::stream).map(serviceInstance -> { - DefaultInstance instance = new DefaultInstance(); - instance.setNamespace(MetadataContext.LOCAL_NAMESPACE); - instance.setService(serviceInstance.getServiceId()); - instance.setProtocol(serviceInstance.getScheme()); - instance.setId(serviceInstance.getInstanceId()); - instance.setHost(serviceInstance.getHost()); - instance.setPort(serviceInstance.getPort()); - instance.setWeight(100); - instance.setMetadata(serviceInstance.getMetadata()); - return instance; - }).collect(Collectors.toList()); + private static final int DEFAULT_WEIGHT = 100; + /** + * transfer servers to ServiceInstances + * + * @param servers servers + * @return ServiceInstances + */ + public static ServiceInstances transferServersToServiceInstances(Flux> servers) { + List instances = servers.toStream() + .flatMap(List::stream) + .map(LoadBalancerUtils::transferServerToServiceInstance) + .collect(Collectors.toList()); String serviceName = null; if (!CollectionUtils.isEmpty(instances)) { serviceName = instances.get(0).getService(); @@ -62,4 +61,24 @@ public class LoadBalancerUtils { return new DefaultServiceInstances(serviceKey, instances); } + + /** + * transfer ServiceInstance to DefaultInstance + * + * @param serviceInstance serviceInstance + * @return defaultInstance + */ + public static DefaultInstance transferServerToServiceInstance(ServiceInstance serviceInstance) { + DefaultInstance instance = new DefaultInstance(); + instance.setNamespace(MetadataContext.LOCAL_NAMESPACE); + instance.setService(serviceInstance.getServiceId()); + instance.setProtocol(serviceInstance.getScheme()); + instance.setId(serviceInstance.getInstanceId()); + instance.setHost(serviceInstance.getHost()); + instance.setPort(serviceInstance.getPort()); + instance.setWeight(DEFAULT_WEIGHT); + instance.setMetadata(serviceInstance.getMetadata()); + return instance; + } + } diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisServiceInstanceListSupplier.java b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisServiceInstanceListSupplier.java index b0119932f..9a46b8648 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisServiceInstanceListSupplier.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisServiceInstanceListSupplier.java @@ -17,10 +17,9 @@ package com.tencent.cloud.polaris.loadbalancer; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; -import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.pojo.PolarisServiceInstance; import com.tencent.polaris.api.pojo.DefaultInstance; import org.apache.commons.lang.StringUtils; @@ -63,20 +62,10 @@ public class PolarisServiceInstanceListSupplier extends DelegatingServiceInstanc throw new IllegalStateException( "PolarisRoutingLoadBalancer only Server with AppName or ServiceIdForDiscovery attribute"); } - List serviceInstances = new ArrayList<>(allServers.size()); - for (ServiceInstance server : allServers) { - DefaultInstance instance = new DefaultInstance(); - instance.setNamespace(MetadataContext.LOCAL_NAMESPACE); - instance.setService(serviceName); - instance.setProtocol(server.getScheme()); - instance.setId(server.getInstanceId()); - instance.setHost(server.getHost()); - instance.setPort(server.getPort()); - instance.setWeight(100); - instance.setMetadata(server.getMetadata()); - serviceInstances.add(new PolarisServiceInstance(instance)); - } - return serviceInstances; + return allServers.stream().map(server -> { + DefaultInstance instance = LoadBalancerUtils.transferServerToServiceInstance(server); + return new PolarisServiceInstance(instance); + }).collect(Collectors.toList()); } }