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 19f83a45d..b0caff8d6 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 @@ -19,13 +19,11 @@ package com.tencent.cloud.polaris.router; import com.tencent.cloud.common.constant.OrderConstant; import com.tencent.cloud.polaris.context.PolarisConfigModifier; -import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties; 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.metadata.MetadataRouterConfig; import com.tencent.polaris.plugins.router.nearby.NearbyRouterConfig; import com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto; @@ -38,10 +36,8 @@ public class RouterConfigModifier implements PolarisConfigModifier { private final PolarisNearByRouterProperties polarisNearByRouterProperties; - private final PolarisMetadataRouterProperties polarisMetadataRouterProperties; - public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, PolarisMetadataRouterProperties polarisMetadataRouterProperties) { + public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) { this.polarisNearByRouterProperties = polarisNearByRouterProperties; - this.polarisMetadataRouterProperties = polarisMetadataRouterProperties; } @Override @@ -54,9 +50,6 @@ public class RouterConfigModifier implements PolarisConfigModifier { // Update modified config to source properties configuration.getConsumer().getServiceRouter() .setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, recoverRouterConfig); - MetadataRouterConfig metadataRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig( - ServiceRouterConfig.DEFAULT_ROUTER_METADATA, MetadataRouterConfig.class); - metadataRouterConfig.setMetadataFailOverType(polarisMetadataRouterProperties.getFailoverType()); if (StringUtils.isNotBlank(polarisNearByRouterProperties.getMatchLevel())) { RoutingProto.NearbyRoutingConfig.LocationLevel locationLevel = RoutingProto.NearbyRoutingConfig.LocationLevel.valueOf(StringUtils.upperCase(polarisNearByRouterProperties.getMatchLevel())); 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 0cb5a00f1..c428b4a0a 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 @@ -41,8 +41,8 @@ public class RouterConfigModifierAutoConfiguration { @Bean @ConditionalOnMissingBean - public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, PolarisMetadataRouterProperties polarisMetadataRouterProperties) { - return new RouterConfigModifier(polarisNearByRouterProperties, polarisMetadataRouterProperties); + public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) { + return new RouterConfigModifier(polarisNearByRouterProperties); } } diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisMetadataRouterProperties.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisMetadataRouterProperties.java index 4ff6e244a..2e055150f 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisMetadataRouterProperties.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/properties/PolarisMetadataRouterProperties.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.router.config.properties; -import com.tencent.polaris.plugins.router.metadata.FailOverType; +import com.tencent.polaris.api.rpc.MetadataFailoverType; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -30,14 +30,14 @@ public class PolarisMetadataRouterProperties { private boolean enabled = true; - private FailOverType failoverType = FailOverType.all; + private MetadataFailoverType failOver = MetadataFailoverType.METADATAFAILOVERALL; - public FailOverType getFailoverType() { - return failoverType; + public MetadataFailoverType getFailOver() { + return failOver; } - public void setFailoverType(FailOverType failoverType) { - this.failoverType = failoverType; + public void setFailOver(MetadataFailoverType failOver) { + this.failOver = failOver; } public boolean isEnabled() { diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/interceptor/MetadataRouterRequestInterceptor.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/interceptor/MetadataRouterRequestInterceptor.java index 019fdd533..7d1a09eb0 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/interceptor/MetadataRouterRequestInterceptor.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/interceptor/MetadataRouterRequestInterceptor.java @@ -45,11 +45,11 @@ public class MetadataRouterRequestInterceptor implements RouterRequestIntercepto if (!polarisMetadataRouterProperties.isEnabled()) { return; } - // set metadata router label keys MetadataContainer metadataContainer = MetadataContextHolder.get() .getMetadataContainer(MetadataType.CUSTOM, false); String metadataRouteKeys = metadataContainer.getRawMetadataStringValue(LABEL_KEY_METADATA_ROUTER_KEYS); metadataContainer.putMetadataMapValue(MetadataRouter.ROUTER_TYPE_METADATA, MetadataRouter.KEY_METADATA_KEYS, metadataRouteKeys, TransitiveType.NONE); + request.setMetadataFailoverType(polarisMetadataRouterProperties.getFailOver()); } } diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-starter-tencent-polaris-router/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 92251c916..858343c4c 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-starter-tencent-polaris-router/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -6,6 +6,12 @@ "defaultValue": true, "description": "the switch for metadata router." }, + { + "name": "spring.cloud.polaris.router.metadata-router.failOver", + "type": "java.lang.String", + "defaultValue": "METADATAFAILOVERALL", + "description": "the fail over type for rule based router." + }, { "name": "spring.cloud.polaris.router.nearby-router.enabled", "type": "java.lang.Boolean",