ny
昨天 b6f169fe43a2b13f351aefc152374fc7f0bc8cb7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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);
        }
    }
 
}