fix 修复 OssClient 实例多租户相同key缓存覆盖问题

2.X
疯狂的狮子li 2 years ago
parent b2855cb5ec
commit a6b9224935

@ -45,15 +45,17 @@ public class OssFactory {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
} }
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
OssClient client = CLIENT_CACHE.get(configKey); // 使用租户标识避免多个租户相同key实例覆盖
String key = properties.getTenantId() + ":" + configKey;
OssClient client = CLIENT_CACHE.get(key);
if (client == null) { if (client == null) {
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); CLIENT_CACHE.put(key, new OssClient(configKey, properties));
log.info("创建OSS实例 key => {}", configKey); log.info("创建OSS实例 key => {}", configKey);
return CLIENT_CACHE.get(configKey); return CLIENT_CACHE.get(configKey);
} }
// 配置不相同则重新构建 // 配置不相同则重新构建
if (!client.checkPropertiesSame(properties)) { if (!client.checkPropertiesSame(properties)) {
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); CLIENT_CACHE.put(key, new OssClient(configKey, properties));
log.info("重载OSS实例 key => {}", configKey); log.info("重载OSS实例 key => {}", configKey);
return CLIENT_CACHE.get(configKey); return CLIENT_CACHE.get(configKey);
} }

@ -10,6 +10,11 @@ import lombok.Data;
@Data @Data
public class OssProperties { public class OssProperties {
/**
* id
*/
private String tenantId;
/** /**
* *
*/ */

Loading…
Cancel
Save