diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/RouterConfigModifier.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/RouterConfigModifier.java index b0caff8d6..e1801910c 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/RouterConfigModifier.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/RouterConfigModifier.java @@ -18,12 +18,16 @@ package com.tencent.cloud.polaris.router; import com.tencent.cloud.common.constant.OrderConstant; +import com.tencent.cloud.common.tsf.TsfContextUtils; import com.tencent.cloud.polaris.context.PolarisConfigModifier; +import com.tencent.cloud.polaris.router.config.properties.PolarisLaneRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties; import com.tencent.polaris.api.config.consumer.ServiceRouterConfig; import com.tencent.polaris.api.utils.StringUtils; import com.tencent.polaris.factory.config.ConfigurationImpl; import com.tencent.polaris.plugins.router.healthy.RecoverRouterConfig; +import com.tencent.polaris.plugins.router.lane.BaseLaneMode; +import com.tencent.polaris.plugins.router.lane.LaneRouterConfig; import com.tencent.polaris.plugins.router.nearby.NearbyRouterConfig; import com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto; @@ -36,8 +40,11 @@ public class RouterConfigModifier implements PolarisConfigModifier { private final PolarisNearByRouterProperties polarisNearByRouterProperties; - public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) { + private final PolarisLaneRouterProperties polarisLaneRouterProperties; + + public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, PolarisLaneRouterProperties polarisLaneRouterProperties) { this.polarisNearByRouterProperties = polarisNearByRouterProperties; + this.polarisLaneRouterProperties = polarisLaneRouterProperties; } @Override @@ -59,7 +66,14 @@ public class RouterConfigModifier implements PolarisConfigModifier { configuration.getConsumer().getServiceRouter() .setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_NEARBY, nearbyRouterConfig); } - + LaneRouterConfig laneRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig( + ServiceRouterConfig.DEFAULT_ROUTER_LANE, LaneRouterConfig.class); + if (TsfContextUtils.isOnlyTsfConsulEnabled()) { + polarisLaneRouterProperties.setBaseLaneMode(BaseLaneMode.EXCLUDE_ENABLED_LANE_INSTANCE); + } + laneRouterConfig.setBaseLaneMode(polarisLaneRouterProperties.getBaseLaneMode()); + configuration.getConsumer().getServiceRouter() + .setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_LANE, laneRouterConfig); } @Override diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RouterConfigModifierAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RouterConfigModifierAutoConfiguration.java index c428b4a0a..3355bc7af 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RouterConfigModifierAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RouterConfigModifierAutoConfiguration.java @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris.router.config; import com.tencent.cloud.polaris.router.RouterConfigModifier; +import com.tencent.cloud.polaris.router.config.properties.PolarisLaneRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNamespaceRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties; @@ -36,13 +37,14 @@ import org.springframework.context.annotation.Import; @Configuration(proxyBeanMethods = false) @ConditionalOnPolarisRouterEnabled @Import({PolarisNearByRouterProperties.class, PolarisMetadataRouterProperties.class, PolarisRuleBasedRouterProperties.class, - PolarisNamespaceRouterProperties.class}) + PolarisNamespaceRouterProperties.class, PolarisLaneRouterProperties.class}) public class RouterConfigModifierAutoConfiguration { @Bean @ConditionalOnMissingBean - public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) { - return new RouterConfigModifier(polarisNearByRouterProperties); + public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, + PolarisLaneRouterProperties polarisLaneRouterProperties) { + return new RouterConfigModifier(polarisNearByRouterProperties, polarisLaneRouterProperties); } } diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisLaneRouterProperties.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisLaneRouterProperties.java new file mode 100644 index 000000000..7e687bc6c --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisLaneRouterProperties.java @@ -0,0 +1,58 @@ +/* + * Tencent is pleased to support the open source community by making spring-cloud-tencent available. + * + * Copyright (C) 2021 Tencent. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * 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 com.tencent.cloud.polaris.router.config.properties; +import com.tencent.polaris.plugins.router.lane.BaseLaneMode; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * the configuration for lane router. + * + * @author Yuwei Fu + */ +@ConfigurationProperties(prefix = "spring.cloud.polaris.router.lane-router") +public class PolarisLaneRouterProperties { + + private boolean enabled = true; + + private BaseLaneMode baseLaneMode = BaseLaneMode.ONLY_UNTAGGED_INSTANCE; + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public BaseLaneMode getBaseLaneMode() { + return baseLaneMode; + } + + public void setBaseLaneMode(BaseLaneMode baseLaneMode) { + this.baseLaneMode = baseLaneMode; + } + + @Override + public String toString() { + return "PolarisLaneRouterProperties{" + + "enabled=" + enabled + + ", baseLaneMode=" + baseLaneMode + + '}'; + } +}