diff --git a/src/main/java/neatlogic/framework/common/config/Config.java b/src/main/java/neatlogic/framework/common/config/Config.java index 18414c2bfd599686334ccdc8518f2db10bd6e9a4..45494d2edb825e06d9f0d6393686f87ce3ff76ce 100644 --- a/src/main/java/neatlogic/framework/common/config/Config.java +++ b/src/main/java/neatlogic/framework/common/config/Config.java @@ -510,48 +510,57 @@ public class Config { public static Properties properties = new Properties(); private void initConfigFile() { - try { - StringBuilder sid = new StringBuilder(StringUtils.EMPTY); - BufferedReader br; - try (InputStream is = Config.class.getClassLoader().getResourceAsStream(SERVER_ID_FILE);) { - if (is != null) { - try (InputStreamReader in = new InputStreamReader(is, StandardCharsets.UTF_8);) { - br = new BufferedReader(in); - String inLine = ""; - while ((inLine = br.readLine()) != null) { - sid.append(inLine); + //本地开发测试多节点 + if (StringUtils.isNotBlank(System.getProperty("serverId"))) { + try { + SCHEDULE_SERVER_ID = Integer.parseInt(System.getProperty("serverId")); + } catch (Exception ex) { + SCHEDULE_SERVER_ID = 9999; + } + } else { + try { + StringBuilder sid = new StringBuilder(StringUtils.EMPTY); + BufferedReader br; + try (InputStream is = Config.class.getClassLoader().getResourceAsStream(SERVER_ID_FILE);) { + if (is != null) { + try (InputStreamReader in = new InputStreamReader(is, StandardCharsets.UTF_8);) { + br = new BufferedReader(in); + String inLine = ""; + while ((inLine = br.readLine()) != null) { + sid.append(inLine); + } } - } - } else { - String classpath = System.getenv("CLASSPATH"); - String[] split = classpath.split(":"); - System.out.println("配置文件目录:" + split[0]); - File file = new File(split[0] + File.separator + SERVER_ID_FILE); - if (!file.getParentFile().exists()) { - file.getParentFile().mkdirs(); - } - file.createNewFile(); - try (FileWriter fw = new FileWriter(file)) { - Random random = new Random(); - int i = random.nextInt(); - if (i < 0) { - i = Math.abs(i); + } else { + String classpath = System.getenv("CLASSPATH"); + String[] split = classpath.split(":"); + System.out.println("配置文件目录:" + split[0]); + File file = new File(split[0] + File.separator + SERVER_ID_FILE); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + file.createNewFile(); + try (FileWriter fw = new FileWriter(file)) { + Random random = new Random(); + int i = random.nextInt(); + if (i < 0) { + i = Math.abs(i); + } + sid.append(i); + fw.write(sid.toString()); + fw.flush(); + } catch (Exception e) { + logger.error(e.getMessage(), e); } - sid.append(i); - fw.write(sid.toString()); - fw.flush(); - } catch (Exception e) { - logger.error(e.getMessage(), e); } + } catch (Exception e) { + // logger.error(e.getMessage(), e); } - } catch (Exception e) { - // logger.error(e.getMessage(), e); + SCHEDULE_SERVER_ID = Integer.parseInt(sid.toString()); + } catch (Exception ex) { + logger.error("【缺少服务唯一标识】请在classpath所在目录创建文件:" + SERVER_ID_FILE + ",并填入一个正整数,正常启动后不要随意修改此数字,如果采用多活方式部署,唯一标识不能重复。"); + System.out.println("【缺少服务唯一标识】请在classpath所在目录创建文件:" + SERVER_ID_FILE + ",并填入一个正整数,正常启动后不要随意修改此数字,如果采用多活方式部署,唯一标识不能重复。"); + throw ex; } - SCHEDULE_SERVER_ID = Integer.parseInt(sid.toString()); - } catch (Exception ex) { - logger.error("【缺少服务唯一标识】请在classpath所在目录创建文件:" + SERVER_ID_FILE + ",并填入一个正整数,正常启动后不要随意修改此数字,如果采用多活方式部署,唯一标识不能重复。"); - System.out.println("【缺少服务唯一标识】请在classpath所在目录创建文件:" + SERVER_ID_FILE + ",并填入一个正整数,正常启动后不要随意修改此数字,如果采用多活方式部署,唯一标识不能重复。"); - throw ex; } // try { diff --git a/src/main/java/neatlogic/framework/heartbeat/core/HeartbeatManager.java b/src/main/java/neatlogic/framework/heartbeat/core/HeartbeatManager.java index 4df7fd1338a691382bf81c8e936b90ea8cd238fe..1ea595c1f347b6fe582071529c6224663be12d73 100644 --- a/src/main/java/neatlogic/framework/heartbeat/core/HeartbeatManager.java +++ b/src/main/java/neatlogic/framework/heartbeat/core/HeartbeatManager.java @@ -73,7 +73,7 @@ public class HeartbeatManager extends ModuleInitializedListenerBase { ip = userFunctionValue; } } - ServerClusterVo serverVo = serverMapper.getServerByServerId(Config.SCHEDULE_SERVER_ID); + ServerClusterVo serverVo = serverMapper.getServerLockByServerId(Config.SCHEDULE_SERVER_ID); if (serverVo != null && StringUtils.isNotBlank(serverVo.getIp())) { if (!Objects.equals(serverVo.getIp(), ip)) { System.err.println($.t("nfhc.heartbeatmanager.myinit.startupfailureprompt", Config.SCHEDULE_SERVER_ID, serverVo.getIp())); @@ -150,7 +150,7 @@ public class HeartbeatManager extends ModuleInitializedListenerBase { TransactionStatus transactionStatus = TransactionUtil.openTx(); boolean returnVal = false; try { - ServerClusterVo serverVo = serverMapper.getServerByServerId(serverId); + ServerClusterVo serverVo = serverMapper.getServerLockByServerId(serverId); if (serverVo != null) { if (ServerClusterVo.STARTUP.equals(serverVo.getStatus())) { serverVo.setStatus(ServerClusterVo.STOP); diff --git a/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.java b/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.java index 180550f95f88e7c83bb8c0a95073ed1f0abff775..c755a12ff6ff6cbc2964391d4c7031f2ed72d8a1 100644 --- a/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.java +++ b/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.java @@ -13,7 +13,9 @@ public interface ServerMapper { //SELECT List getInactivatedServerIdList(@Param("fromServerId") int fromServerId, @Param("threshold") int threshold); - ServerClusterVo getServerByServerId(Integer serverId); + ServerClusterVo getServerLockByServerId(Integer serverId); + + List getOtherStartUpServerByServerId(Integer serverId); List getAllServerList(); diff --git a/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.xml b/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.xml index c3ca3ae10a37ecc5087365f58dde500f0d04187c..7309b35691c9249b041d5b16b00e36079d8ddc13 100644 --- a/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.xml +++ b/src/main/java/neatlogic/framework/heartbeat/dao/mapper/ServerMapper.xml @@ -8,7 +8,7 @@ AND `counter` >= #{threshold} - + +