feat: 创建缓存文件夹

This commit is contained in:
骑着蜗牛追导弹 2024-12-03 22:22:03 +08:00
parent d12bb238cf
commit 4a5107653f
3 changed files with 54 additions and 17 deletions

View File

@ -1,5 +1,6 @@
package cn.odboy.config.context; package cn.odboy.config.context;
import cn.hutool.core.io.FileUtil;
import cn.odboy.config.ConfigCenterProperties; import cn.odboy.config.ConfigCenterProperties;
import cn.odboy.config.netty.ConfigCenterClient; import cn.odboy.config.netty.ConfigCenterClient;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -11,6 +12,11 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.ConfigurableEnvironment;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/** /**
* 配置加载器 * 配置加载器
* *
@ -22,7 +28,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
public class ConfigCenterConfigLoader { public class ConfigCenterConfigLoader {
private static final String OS_TYPE_WIN = "win"; private static final String OS_TYPE_WIN = "win";
private static final String OS_TYPE_MAC = "mac"; private static final String OS_TYPE_MAC = "mac";
private static final String DEFAULT_PATH_WIN = "c:/data"; private static final String DEFAULT_PATH_WIN = "c:\\data";
private static final String DEFAULT_PATH_MAC = "/home/admin/data"; private static final String DEFAULT_PATH_MAC = "/home/admin/data";
private static final String DEFAULT_CONFIG_SERVER = "127.0.0.1"; private static final String DEFAULT_CONFIG_SERVER = "127.0.0.1";
private static final Integer DEFAULT_CONFIG_PORT = 28002; private static final Integer DEFAULT_CONFIG_PORT = 28002;
@ -37,6 +43,11 @@ public class ConfigCenterConfigLoader {
private static final String DEFAULT_CONFIG_NAME_ENV = "kenaito.config-center.env"; private static final String DEFAULT_CONFIG_NAME_ENV = "kenaito.config-center.env";
private static final String DEFAULT_CONFIG_NAME_DATA_ID = "kenaito.config-center.data-id"; private static final String DEFAULT_CONFIG_NAME_DATA_ID = "kenaito.config-center.data-id";
private static final String DEFAULT_CONFIG_NAME_CACHE_DIR = "kenaito.config-center.cache-dir"; private static final String DEFAULT_CONFIG_NAME_CACHE_DIR = "kenaito.config-center.cache-dir";
/**
* 路径分割符
*/
private static final String DEFAULT_PATH_SEP_WIN = "\\";
private static final String DEFAULT_PATH_SEP_MAC = "/";
@Autowired @Autowired
private ConfigCenterProperties properties; private ConfigCenterProperties properties;
@ -45,26 +56,17 @@ public class ConfigCenterConfigLoader {
return new BeanFactoryPostProcessor() { return new BeanFactoryPostProcessor() {
@Override @Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String defaultCacheDir; String defaultCacheDir = getDefaultCacheDir();
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith(OS_TYPE_WIN)) {
defaultCacheDir = DEFAULT_PATH_WIN;
} else if (os.toLowerCase().startsWith(OS_TYPE_MAC)) {
defaultCacheDir = DEFAULT_PATH_MAC;
} else {
defaultCacheDir = DEFAULT_PATH_MAC;
}
String server = environment.getProperty(DEFAULT_CONFIG_NAME_SERVER, String.class, DEFAULT_CONFIG_SERVER); String server = environment.getProperty(DEFAULT_CONFIG_NAME_SERVER, String.class, DEFAULT_CONFIG_SERVER);
Integer port = environment.getProperty(DEFAULT_CONFIG_NAME_PORT, Integer.class, DEFAULT_CONFIG_PORT); Integer port = environment.getProperty(DEFAULT_CONFIG_NAME_PORT, Integer.class, DEFAULT_CONFIG_PORT);
String env = environment.getProperty(DEFAULT_CONFIG_NAME_ENV, String.class, DEFAULT_CONFIG_ENV); String env = environment.getProperty(DEFAULT_CONFIG_NAME_ENV, String.class, DEFAULT_CONFIG_ENV);
String dataId = environment.getProperty(DEFAULT_CONFIG_NAME_DATA_ID, String.class, DEFAULT_CONFIG_DATA_ID); String dataId = environment.getProperty(DEFAULT_CONFIG_NAME_DATA_ID, String.class, DEFAULT_CONFIG_DATA_ID);
String cacheDir = environment.getProperty(DEFAULT_CONFIG_NAME_CACHE_DIR, String.class, defaultCacheDir); String cacheDir = environment.getProperty(DEFAULT_CONFIG_NAME_CACHE_DIR, String.class, defaultCacheDir);
if (defaultCacheDir.contains(DEFAULT_PATH_WIN_SEP) && !cacheDir.contains(DEFAULT_PATH_WIN_SEP)) { validateCacheDirPath(defaultCacheDir, cacheDir);
throw new RuntimeException(DEFAULT_CONFIG_NAME_CACHE_DIR + " 配置的路径不正确"); createCacheDir(cacheDir);
}
ConfigCenterClient client = new ConfigCenterClient(); ConfigCenterClient client = new ConfigCenterClient();
try { try {
client.start(properties); client.start(server, port);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("Netty Client Start Error", e); log.error("Netty Client Start Error", e);
throw new RuntimeException(e); throw new RuntimeException(e);
@ -76,4 +78,39 @@ public class ConfigCenterConfigLoader {
} }
}; };
} }
private static String getDefaultCacheDir() {
String defaultCacheDir;
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith(OS_TYPE_WIN)) {
defaultCacheDir = DEFAULT_PATH_WIN;
} else if (os.toLowerCase().startsWith(OS_TYPE_MAC)) {
defaultCacheDir = DEFAULT_PATH_MAC;
} else {
defaultCacheDir = DEFAULT_PATH_MAC;
}
return defaultCacheDir;
}
private static void validateCacheDirPath(String defaultCacheDir, String cacheDir) {
if (defaultCacheDir.contains(DEFAULT_PATH_WIN_SEP) && !cacheDir.contains(DEFAULT_PATH_WIN_SEP)) {
throw new RuntimeException(DEFAULT_CONFIG_NAME_CACHE_DIR + " 配置的路径不正确");
}
if (cacheDir.contains(DEFAULT_PATH_WIN_SEP) && !cacheDir.contains(DEFAULT_PATH_SEP_WIN)) {
throw new RuntimeException(DEFAULT_CONFIG_NAME_CACHE_DIR + " 配置的路径不正确, 正确的路径示范, " + DEFAULT_PATH_WIN);
}
}
/**
* 创建缓存文件夹
*/
private static void createCacheDir(String cacheDir) {
Path path = Paths.get(cacheDir);
if (!Files.exists(path)) {
File mkdir = FileUtil.mkdir(cacheDir);
if (!mkdir.canWrite()) {
throw new RuntimeException("缓存文件夹创建失败, 无读写权限");
}
}
}
} }

View File

@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class ConfigCenterClient { public class ConfigCenterClient {
public void start(ConfigCenterProperties properties) throws InterruptedException { public void start(String server, Integer port) throws InterruptedException {
EventLoopGroup group = new NioEventLoopGroup(); EventLoopGroup group = new NioEventLoopGroup();
try { try {
Bootstrap bootstrap = new Bootstrap(); Bootstrap bootstrap = new Bootstrap();
@ -25,7 +25,7 @@ public class ConfigCenterClient {
} }
}); });
log.info("Netty Client Start..."); log.info("Netty Client Start...");
ChannelFuture channelFuture = bootstrap.connect(properties.getServer(), properties.getPort()).sync(); ChannelFuture channelFuture = bootstrap.connect(server, port).sync();
channelFuture.channel().closeFuture().sync(); channelFuture.channel().closeFuture().sync();
} finally { } finally {
group.shutdownGracefully(); group.shutdownGracefully();

View File

@ -3,5 +3,5 @@ kenaito:
server: 127.0.0.1 server: 127.0.0.1
port: 28002 port: 28002
data-id: kenaito-config-service data-id: kenaito-config-service
cache-dir: /home/admin/data cache-dir: c:\\data
env: daily env: daily