fix: 注册 TenantAwareLoadBalancer 为 Spring Bean
问题:TenantAwareLoadBalancer 类存在但未被注册为 Spring Bean 解决方案: 1. 创建 TenantLoadBalancerAutoConfig 配置类 - @ConditionalOnProperty 启用条件配置 - @Bean 注册 ReactorServiceInstanceLoadBalancer 2. 添加 Spring Boot 自动配置注册 - META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports - 注册 TenantLoadBalancerAutoConfig、NacosMetadataConfig、MybatisTenantAutoConfig
This commit is contained in:
parent
2c0f2f8952
commit
2825050502
@ -0,0 +1,44 @@
|
||||
package com.fundplatform.common.loadbalancer;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
|
||||
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
|
||||
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* 多租户负载均衡器自动配置
|
||||
*
|
||||
* <p>当 tenant.routing.enabled=true 时启用租户感知的负载均衡器</p>
|
||||
*
|
||||
* <p>配置示例:</p>
|
||||
* <pre>
|
||||
* tenant:
|
||||
* routing:
|
||||
* enabled: true
|
||||
* </pre>
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnProperty(name = "tenant.routing.enabled", havingValue = "true", matchIfMissing = true)
|
||||
public class TenantLoadBalancerAutoConfig {
|
||||
|
||||
/**
|
||||
* 注册租户感知负载均衡器
|
||||
*
|
||||
* <p>替换默认的 RoundRobinLoadBalancer,根据租户组路由实例</p>
|
||||
*/
|
||||
@Bean
|
||||
public ReactorServiceInstanceLoadBalancer tenantAwareLoadBalancer(
|
||||
Environment environment,
|
||||
LoadBalancerClientFactory loadBalancerClientFactory) {
|
||||
|
||||
String serviceId = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
|
||||
|
||||
return new TenantAwareLoadBalancer(
|
||||
serviceId,
|
||||
loadBalancerClientFactory.getLazyProvider(serviceId, ServiceInstanceListSupplier.class)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
com.fundplatform.common.loadbalancer.TenantLoadBalancerAutoConfig
|
||||
com.fundplatform.common.nacos.NacosMetadataConfig
|
||||
com.fundplatform.common.mybatis.MybatisTenantAutoConfig
|
||||
Loading…
x
Reference in New Issue
Block a user