package i18n; import com.alibaba.cloud.nacos.NacosConfigManager; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import jnpf.i18n.core.MyReloadableResourceBundleMessageSource; import jnpf.i18n.provider.MessageSourceProvider; import jnpf.util.ThreadPoolExecutorUtil; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.util.concurrent.Executor; /** * 国际化配置 Nacos读取 * * @author JNPF开发平台组 * @user N * @copyright 引迈信息技术有限公司 * @date 2024/3/21 14:00 */ @Slf4j public class NacosMessageSouceProvider implements MessageSourceProvider { private NacosConfigManager nacosConfigManager; public NacosMessageSouceProvider(NacosConfigManager nacosConfigManager) { this.nacosConfigManager = nacosConfigManager; } @Override public String loadMessageResource(String name, MyReloadableResourceBundleMessageSource messageSource) throws IOException { File file = new File(name); String fileName = file.getName() + MessageSourceProvider.PROPERTIES_SUFFIX; try { return nacosConfigManager.getConfigService().getConfigAndSignListener(fileName , nacosConfigManager.getNacosConfigProperties().getGroup() , nacosConfigManager.getNacosConfigProperties().getTimeout() , new Listener() { @Override public Executor getExecutor() { return ThreadPoolExecutorUtil.getExecutor(); } @Override public void receiveConfigInfo(String configInfo) { try { messageSource.refreshConfig(name, configInfo); } catch (IOException e) { log.error("刷新语言配置失败:{}, {}", fileName, e.getMessage(), e); } } }); } catch (NacosException e) { throw new IOException(e); } } }