动态数据源对定时任务的特殊处理

动态数据源对定时任务的特殊处理

项目中动态数据源的实现是通过在请求头中新增一个参数来判断具体使用哪个数据源,而定时任务并不会发起请求,所以对于所有的定时任务都需要循环遍历数据源,用每个数据源分别执行一次。
循环执行定时任务的工具类如下所示。

/**
* clazzName : 定时任务所在的类路径 例如 com.shadowT.test.TastTest
* methodName : 定时任务方法名 例如 task1
**/
 public void iteratorTenant(String clazzName, String methodName) {	
 	 	Class clazz = Class.forName(clazzName);
 		Method method = clazz.getDeclaredMthod(methodName);
 	 	// 循环遍历数据源
 	 	for (Map.Entry<Object, Object> entry : DataSourceConfig.dataSourceMap.entrySet()) {
 	 		// 切换数据源
 	 		TenantCodeHolder.setTenantCode(entry.getKey().toString());
 	 		// 执行具体的定时任务方法
 	 		method.invoke(applicationContext.getBean(clazz));
 	 		// 销毁数据源
 	 		TenantCodeHolder.removeTenantCode();
 	 }
 }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值