diff --git a/pom.xml b/pom.xml
index e13d5975c..19d3e8396 100644
--- a/pom.xml
+++ b/pom.xml
@@ -199,13 +199,6 @@
springdoc-openapi-security
1.6.10
-
-
- com.baomidou
- dynamic-datasource-spring-boot-starter
- 3.6.1
-
-
diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index acd6092fd..9a7912d20 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp;
+import com.genersoft.iot.vmp.jt1078.util.ClassUtil;
import com.genersoft.iot.vmp.utils.GitUtil;
import com.genersoft.iot.vmp.utils.SpringBeanFactory;
import lombok.extern.slf4j.Slf4j;
@@ -33,6 +34,7 @@ public class VManageBootstrap extends SpringBootServletInitializer {
public static void main(String[] args) {
VManageBootstrap.args = args;
VManageBootstrap.context = SpringApplication.run(VManageBootstrap.class, args);
+ ClassUtil.context = VManageBootstrap.context;
GitUtil gitUtil = SpringBeanFactory.getBean("gitUtil");
if (gitUtil == null) {
log.info("获取版本信息失败");
@@ -62,6 +64,5 @@ public class VManageBootstrap extends SpringBootServletInitializer {
);
SessionCookieConfig sessionCookieConfig = servletContext.getSessionCookieConfig();
sessionCookieConfig.setHttpOnly(true);
-
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/ServerInfo.java b/src/main/java/com/genersoft/iot/vmp/common/ServerInfo.java
new file mode 100644
index 000000000..fb1941a13
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/ServerInfo.java
@@ -0,0 +1,23 @@
+package com.genersoft.iot.vmp.common;
+
+import com.genersoft.iot.vmp.utils.DateUtil;
+import lombok.Data;
+
+@Data
+public class ServerInfo {
+
+ private String ip;
+ private int port;
+ /**
+ * 现在使用的线程数
+ */
+ private String createTime;
+
+ public static ServerInfo create(String ip, int port) {
+ ServerInfo serverInfo = new ServerInfo();
+ serverInfo.setIp(ip);
+ serverInfo.setPort(port);
+ serverInfo.setCreateTime(DateUtil.getNow());
+ return serverInfo;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index c89653b14..cee1993fa 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -10,6 +10,8 @@ public class VideoManagerConstants {
public static final String WVP_SERVER_PREFIX = "VMP_SIGNALLING_SERVER_INFO_";
+ public static final String WVP_SERVER_LIST = "VMP_SERVER_LIST";
+
public static final String WVP_SERVER_STREAM_PREFIX = "VMP_SIGNALLING_STREAM_";
public static final String MEDIA_SERVER_PREFIX = "VMP_MEDIA_SERVER_INFO:";
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
index 4742daa55..67c926e61 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
@@ -6,6 +6,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
+import java.util.List;
+
@Component
@ConfigurationProperties(prefix = "sip", ignoreInvalidFields = true)
@Order(0)
@@ -16,6 +18,8 @@ public class SipConfig {
private String showIp;
+ private List monitorIps;
+
private Integer port;
private String domain;
@@ -30,5 +34,5 @@ public class SipConfig {
private boolean alarm = false;
- private long timeout = 15;
+ private long timeout = 150;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java b/src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
index e6a9006a0..cb12754e6 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
@@ -31,10 +31,13 @@ public class SipPlatformRunner implements CommandLineRunner {
@Autowired
private ISIPCommanderForPlatform sipCommanderForPlatform;
+ @Autowired
+ private UserSetting userSetting;
+
@Override
public void run(String... args) throws Exception {
// 获取所有启用的平台
- List parentPlatforms = platformService.queryEnablePlatformList();
+ List parentPlatforms = platformService.queryEnablePlatformList(userSetting.getServerId());
for (Platform platform : parentPlatforms) {
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
index 194bfd3a1..ca346dfab 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
@@ -37,6 +37,11 @@ public class UserSetting {
*/
private Integer playTimeout = 10000;
+ /**
+ * 获取设备录像数据超时时间,单位:毫秒
+ */
+ private Integer recordInfoTimeout = 15000;
+
/**
* 上级点播等待超时时间,单位:毫秒
*/
@@ -180,4 +185,10 @@ public class UserSetting {
*/
private String jwkFile = "classpath:jwk.json";
+ /**
+ * wvp集群模式下如果注册向上级的wvp奔溃,则自动选择一个其他wvp继续注册到上级
+ */
+ private boolean autoRegisterPlatform = false;
+
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
index 6da0caf3a..4a2098a27 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
@@ -1,12 +1,14 @@
package com.genersoft.iot.vmp.conf;
-import com.alibaba.fastjson2.JSONObject;
+import com.genersoft.iot.vmp.common.ServerInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import java.util.concurrent.TimeUnit;
+
@Component
public class WVPTimerTask {
@@ -19,11 +21,8 @@ public class WVPTimerTask {
@Autowired
private SipConfig sipConfig;
- @Scheduled(fixedDelay = 2 * 1000) //每3秒执行一次
+ @Scheduled(fixedDelay = 2, timeUnit = TimeUnit.SECONDS) //每3秒执行一次
public void execute(){
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("ip", sipConfig.getShowIp());
- jsonObject.put("port", serverPort);
- redisCatchStorage.updateWVPInfo(jsonObject, 3);
+ redisCatchStorage.updateWVPInfo(ServerInfo.create(sipConfig.getShowIp(), serverPort), 3);
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java
index b762838c6..b541f7448 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisRpcConfig.java
@@ -3,10 +3,12 @@ package com.genersoft.iot.vmp.conf.redis;
import com.alibaba.fastjson2.JSON;
import com.genersoft.iot.vmp.common.CommonCallback;
import com.genersoft.iot.vmp.conf.UserSetting;
+import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcClassHandler;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcMessage;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcRequest;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcResponse;
-import com.genersoft.iot.vmp.service.redisMsg.control.RedisRpcController;
+import com.genersoft.iot.vmp.service.redisMsg.dto.RpcController;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -16,8 +18,10 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
+import javax.sip.message.Response;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
@@ -36,9 +40,6 @@ public class RedisRpcConfig implements MessageListener {
@Autowired
private UserSetting userSetting;
- @Autowired
- private RedisRpcController redisRpcController;
-
@Autowired
private RedisTemplate