在feign的实现类里这么写
try {
//这里获取租户id
String tenantId = AuthUtil.getTenantId();
//切换数据源
DynamicDataSourceContextHolder.push(tenantId);
//自定义逻辑
xxxxxx
} catch (Exception exception) {
throw new ServiceException(exception.getMessage());
} finally {
//切回主数据源
DynamicDataSourceContextHolder.poll();
}
如果部分租户没有配置数据源,用默认主数据源的情况下,加 DynamicDataSourceContextHolder.push(tenantId); 后会有影响吗?
具体业务逻辑需要你自己控制,哪些有哪些没有应该提前查出来。有就切,没有就不切
这里面涉及到多线程的情况下,request获取不到数据,所以就需要自行编码的形式来解决切换了
扫一扫访问 Blade技术社区 移动端