Commit c9392af4948e06e67f2d802eddb1941a0b591a89

Authored by YunaiV
1 parent d97b85bb

fix(tenant): 按需注册多租户 MQ 配置

将 Redis、RabbitMQ、RocketMQ 的多租户 Bean 拆到独立条件配置,
避免未引入 yudao-spring-boot-starter-mq 的模块启动时因解析
YudaoTenantAutoConfiguration 方法签名触发 NoClassDefFoundError。

Closes https://gitee.com/zhijiantianya/yudao-cloud/issues/IJTOF4
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/config/YudaoTenantAutoConfiguration.java
@@ -30,6 +30,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties @@ -30,6 +30,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
30 import org.springframework.boot.web.servlet.FilterRegistrationBean; 30 import org.springframework.boot.web.servlet.FilterRegistrationBean;
31 import org.springframework.context.ApplicationContext; 31 import org.springframework.context.ApplicationContext;
32 import org.springframework.context.annotation.Bean; 32 import org.springframework.context.annotation.Bean;
  33 +import org.springframework.context.annotation.Configuration;
33 import org.springframework.context.annotation.Primary; 34 import org.springframework.context.annotation.Primary;
34 import org.springframework.data.redis.cache.BatchStrategies; 35 import org.springframework.data.redis.cache.BatchStrategies;
35 import org.springframework.data.redis.cache.RedisCacheConfiguration; 36 import org.springframework.data.redis.cache.RedisCacheConfiguration;
@@ -155,28 +156,37 @@ public class YudaoTenantAutoConfiguration { @@ -155,28 +156,37 @@ public class YudaoTenantAutoConfiguration {
155 156
156 // ========== MQ ========== 157 // ========== MQ ==========
157 158
158 - @Bean  
159 - public TenantRedisMessageInterceptor tenantRedisMessageInterceptor() {  
160 - return new TenantRedisMessageInterceptor(); 159 + @Configuration(proxyBeanMethods = false)
  160 + @ConditionalOnClass(name = "cn.iocoder.yudao.framework.mq.redis.core.interceptor.RedisMessageInterceptor")
  161 + public static class TenantRedisMQConfiguration {
  162 +
  163 + @Bean
  164 + public TenantRedisMessageInterceptor tenantRedisMessageInterceptor() {
  165 + return new TenantRedisMessageInterceptor();
  166 + }
  167 +
161 } 168 }
162 169
163 - @Bean 170 + @Configuration(proxyBeanMethods = false)
164 @ConditionalOnClass(name = "org.springframework.amqp.rabbit.core.RabbitTemplate") 171 @ConditionalOnClass(name = "org.springframework.amqp.rabbit.core.RabbitTemplate")
165 - public TenantRabbitMQInitializer tenantRabbitMQInitializer() {  
166 - return new TenantRabbitMQInitializer(); 172 + public static class TenantRabbitMQConfiguration {
  173 +
  174 + @Bean
  175 + public TenantRabbitMQInitializer tenantRabbitMQInitializer() {
  176 + return new TenantRabbitMQInitializer();
  177 + }
  178 +
167 } 179 }
168 180
169 - @Bean 181 + @Configuration(proxyBeanMethods = false)
170 @ConditionalOnClass(name = "org.apache.rocketmq.spring.core.RocketMQTemplate") 182 @ConditionalOnClass(name = "org.apache.rocketmq.spring.core.RocketMQTemplate")
171 - public TenantRocketMQInitializer tenantRocketMQInitializer() {  
172 - return new TenantRocketMQInitializer();  
173 - } 183 + public static class TenantRocketMQConfiguration {
174 184
175 - // ========== Job ========== 185 + @Bean
  186 + public TenantRocketMQInitializer tenantRocketMQInitializer() {
  187 + return new TenantRocketMQInitializer();
  188 + }
176 189
177 - @Bean  
178 - public TenantJobAspect tenantJobAspect(TenantFrameworkService tenantFrameworkService) {  
179 - return new TenantJobAspect(tenantFrameworkService);  
180 } 190 }
181 191
182 // ========== Redis ========== 192 // ========== Redis ==========
@@ -200,4 +210,17 @@ public class YudaoTenantAutoConfiguration { @@ -200,4 +210,17 @@ public class YudaoTenantAutoConfiguration {
200 return cacheManager; 210 return cacheManager;
201 } 211 }
202 212
  213 + // ========== Job ==========
  214 +
  215 + @Configuration(proxyBeanMethods = false)
  216 + @ConditionalOnClass(name = "com.xxl.job.core.context.XxlJobContext")
  217 + public static class TenantJobConfiguration {
  218 +
  219 + @Bean
  220 + public TenantJobAspect tenantJobAspect(TenantFrameworkService tenantFrameworkService) {
  221 + return new TenantJobAspect(tenantFrameworkService);
  222 + }
  223 +
  224 + }
  225 +
203 } 226 }