diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b7a0b8667c..0000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "java.compile.nullAnalysis.mode": "automatic", - "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable", - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/plugin/IotPluginDeployTypeEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/plugin/IotPluginDeployTypeEnum.java index 263873be7d..11f8a6ef88 100644 --- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/plugin/IotPluginDeployTypeEnum.java +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/plugin/IotPluginDeployTypeEnum.java @@ -13,8 +13,8 @@ import java.util.Arrays; @Getter public enum IotPluginDeployTypeEnum implements IntArrayValuable { - DEPLOY_VIA_JAR(0, "通过 jar 部署"), // TODO @haohao:UPLOAD 和 ALONE 感觉有点冲突,前者是部署方式,后者是运行方式。这个后续再讨论下哈 - DEPLOY_STANDALONE(1, "独立部署"); + JAR(0, "JAR 部署"), + STANDALONE(1, "独立部署"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(IotPluginDeployTypeEnum::getDeployType).toArray(); @@ -48,4 +48,5 @@ public enum IotPluginDeployTypeEnum implements IntArrayValuable { public int[] array() { return ARRAYS; } + } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugininstance/PluginInstanceDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugininstance/PluginInstanceDO.java index 507b91f2a0..8b0ec95d14 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugininstance/PluginInstanceDO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugininstance/PluginInstanceDO.java @@ -33,19 +33,22 @@ public class PluginInstanceDO extends BaseDO { */ private String mainId; /** - * 插件id + * 插件 ID *
* 关联 {@link PluginInfoDO#getId()}
*/
private Long pluginId;
+
/**
- * 插件主程序所在ip
+ * 插件主程序所在 IP
*/
private String ip;
/**
* 插件主程序端口
*/
private Integer port;
+
+ // TODO @haohao:字段改成 heartbeatTime,LocalDateTime
/**
* 心跳时间,心路时间超过 30 秒需要剔除
*/
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInfoServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInfoServiceImpl.java
index 4cf922c20b..37b6328450 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInfoServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInfoServiceImpl.java
@@ -100,7 +100,7 @@ public class PluginInfoServiceImpl implements PluginInfoService {
// 2. 停止并卸载旧的插件
pluginInstanceService.stopAndUnloadPlugin(pluginInfoDo.getPluginKey());
- // 3 上传新的插件文件,更新插件启用状态文件
+ // 3 上传新的插件文件,更新插件启用状态文件
String pluginKeyNew = pluginInstanceService.uploadAndLoadNewPlugin(file);
// 4. 更新插件信息
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceService.java
index 9c360606a8..4df9b10319 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceService.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceService.java
@@ -11,7 +11,7 @@ import org.springframework.web.multipart.MultipartFile;
public interface PluginInstanceService {
/**
- * 上报插件实例
+ * 上报插件实例(心跳)
*/
void reportPluginInstances();
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceServiceImpl.java
index 4a62dbcb92..65a6cf32ba 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/PluginInstanceServiceImpl.java
@@ -41,7 +41,8 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
public class PluginInstanceServiceImpl implements PluginInstanceService {
// TODO @haohao:这个可以后续确认下,有没更合适的标识。例如说 mac 地址之类的
- // 简化的UUID + mac 地址 会不会好一些,一台机子有可能会部署多个插件
+ // 简化的 UUID + mac 地址 会不会好一些,一台机子有可能会部署多个插件;
+ // 那就 mac@uuid ?
public static final String MAIN_ID = IdUtil.fastSimpleUUID();
@Resource
@@ -53,13 +54,13 @@ public class PluginInstanceServiceImpl implements PluginInstanceService {
@Value("${pf4j.pluginsDir}")
private String pluginsDir;
-
@Value("${server.port:48080}")
private int port;
@Override
public void stopAndUnloadPlugin(String pluginKey) {
PluginWrapper plugin = pluginManager.getPlugin(pluginKey);
+ // TODO @haohao:改成 if return 会更简洁一点;
if (plugin != null) {
if (plugin.getPluginState().equals(PluginState.STARTED)) {
pluginManager.stopPlugin(pluginKey); // 停止插件
@@ -75,6 +76,7 @@ public class PluginInstanceServiceImpl implements PluginInstanceService {
@Override
public void deletePluginFile(PluginInfoDO pluginInfoDO) {
File file = new File(pluginsDir, pluginInfoDO.getFileName());
+ // TODO @haohao:改成 if return 会更简洁一点;
if (file.exists()) {
try {
TimeUnit.SECONDS.sleep(1); // 等待 1 秒,避免插件未卸载完毕
@@ -82,9 +84,7 @@ public class PluginInstanceServiceImpl implements PluginInstanceService {
log.error("[deletePluginInfo][删除插件文件({}) 失败]", pluginInfoDO.getFileName());
}
} catch (InterruptedException e) {
- log.error("[deletePluginInfo][删除插件文件({}) 失败]", pluginInfoDO.getFileName(),
- e);
- Thread.currentThread().interrupt(); // 恢复中断状态
+ log.error("[deletePluginInfo][删除插件文件({}) 失败]", pluginInfoDO.getFileName(), e);
}
}
}
@@ -120,6 +120,7 @@ public class PluginInstanceServiceImpl implements PluginInstanceService {
String pluginKey = pluginInfoDo.getPluginKey();
PluginWrapper plugin = pluginManager.getPlugin(pluginKey);
+ // TODO @haohao:改成 if return 会更简洁一点;
if (plugin != null) {
// 启动插件
if (status.equals(IotPluginStatusEnum.RUNNING.getStatus())
@@ -143,46 +144,41 @@ public class PluginInstanceServiceImpl implements PluginInstanceService {
@Override
public void reportPluginInstances() {
- // 1. 获取 pf4j 插件列表
+ // 1.1 获取 pf4j 插件列表
List