mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-09 04:49:02 +08:00
✨ Introducing new features. #2303 兼容并支持SCL 灰度路由
This commit is contained in:
1 parent
3990f3f51b
commit
3197cac20f
2 files changed
+4
-42
No files matched your search
+4
-3
@@ -18,12 +18,13 @@
|
||||
package com.pig4cloud.pigx.common.gray;
|
||||
|
||||
import com.pig4cloud.pigx.common.gray.feign.GrayFeignRequestInterceptor;
|
||||
import com.pig4cloud.pigx.common.gray.rule.GrayLoadBalancerClientConfigurationRegistrar;
|
||||
import com.pig4cloud.pigx.common.gray.rule.GrayLoadBalancerClientConfiguration;
|
||||
import feign.RequestInterceptor;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
@@ -31,7 +32,7 @@ import org.springframework.context.annotation.Import;
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnProperty(value = "gray.rule.enabled", havingValue = "true")
|
||||
@Import(GrayLoadBalancerClientConfigurationRegistrar.class)
|
||||
@LoadBalancerClients(defaultConfiguration = GrayLoadBalancerClientConfiguration.class)
|
||||
public class GrayLoadBalancerAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
package com.pig4cloud.pigx.common.gray.rule;
|
||||
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientSpecification;
|
||||
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
* @date 2020/11/20
|
||||
*/
|
||||
public class GrayLoadBalancerClientConfigurationRegistrar implements ImportBeanDefinitionRegistrar {
|
||||
|
||||
private static void registerClientConfiguration(BeanDefinitionRegistry registry, Object name,
|
||||
Object configuration) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(LoadBalancerClientSpecification.class);
|
||||
builder.addConstructorArgValue(name);
|
||||
builder.addConstructorArgValue(configuration);
|
||||
registry.registerBeanDefinition(name + ".LoadBalancerClientSpecification", builder.getBeanDefinition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
|
||||
Field[] fields = ReflectUtil.getFields(ServiceNameConstants.class);
|
||||
|
||||
// 遍历服务名称,注入支持灰度策略的负载均衡器
|
||||
for (Field field : fields) {
|
||||
Object fieldValue = ReflectUtil.getFieldValue(ServiceNameConstants.class, field);
|
||||
registerClientConfiguration(registry, fieldValue, GrayLoadBalancerClientConfiguration.class);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user