强刷多语言本地缓存

This commit is contained in:
2025-07-07 17:27:24 +08:00
parent 918c017cbc
commit fd7dca73d5
2 changed files with 20 additions and 6 deletions

View File

@@ -142,6 +142,7 @@ public class I18NMessageSourceUtil {
MessageI18nNacosService messageI18nNacosService = SpringContextHolder.getBean(MessageI18nNacosService.class);
ThreadPoolExecutor bizExecutor = SpringContextHolder.getBean(ThreadPoolExecutor.class);
Class<?> clazz = obj.getClass();
Set<Locale> refreshLocalSet = new HashSet<>();
for (Field field : clazz.getDeclaredFields()) {
String fieldName = field.getName();
if (fieldNames.contains(fieldName)) {
@@ -162,7 +163,9 @@ public class I18NMessageSourceUtil {
// 需要保存的值
String i18nValue = jsonObject.getString(key);
if (StringUtils.isNoneBlank(i18nValue)) {
messageI18nNacosService.saveOrUpdate(new Locale(key), i18nKey, i18nValue);
Locale locale = new Locale(key);
refreshLocalSet.add(locale);
messageI18nNacosService.saveOrUpdate(locale, i18nKey, i18nValue);
}
} catch (Exception e) {
log.error("I18NMessageSourceUtil save exception lang {} key {} ,{}",
@@ -177,6 +180,9 @@ public class I18NMessageSourceUtil {
field.set(obj, zhValue);
}
}
if (refreshLocalSet.size() > 0) {
messageI18nNacosService.refreshForce(refreshLocalSet);
}
//SpringContextHolder.getBean(I18nMessageNacosAutoConfig.class).initTip();
}

View File

@@ -1,12 +1,12 @@
package com.accompany.core.service;
import cn.hutool.core.util.StrUtil;
import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.config.I18nMessageConfig;
import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.cloud.nacos.NacosConfigProperties;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import lombok.Getter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -19,10 +19,7 @@ import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.*;
/**
* @ClassName MessageConfService
@@ -148,4 +145,15 @@ public class MessageI18nNacosService implements InitializingBean {
i18nNacosConfigService = NacosFactory.createConfigService(i18nNacosServiceConfig.assembleConfigServiceProperties());
}
public void refreshForce(Set<Locale> refreshLocalSet) {
try {
// 触发所有相关locale的配置刷新
for (Locale locale : refreshLocalSet) {
i18nNacosConfigService.getConfig(getMessageFileName(locale.getLanguage()), GROUP, 5000);
}
} catch (NacosException e) {
log.warn("强制刷新Nacos配置失败可能读取到旧值", e);
}
}
}