From e85cef434595073b777cea8338543b93d3956b93 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 17 四月 2024 23:23:42 +0800
Subject: [PATCH] 优化多wvp国标级联推流时缓存的清理
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java | 13 ++++++++-----
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 27 +++++++++++++++++++++++++++
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 4 ++++
3 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index 64538db..51c5b69 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -54,10 +54,7 @@
import javax.sip.message.Response;
import java.text.ParseException;
import java.time.Instant;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.Vector;
+import java.util.*;
/**
* SIP鍛戒护绫诲瀷锛� INVITE璇锋眰
@@ -589,7 +586,13 @@
sendRtpItem.setOnlyAudio(false);
sendRtpItem.setStatus(0);
sendRtpItem.setSessionName(sessionName);
-
+ // 娓呯悊鍙兘瀛樺湪鐨勭紦瀛橀伩鍏嶇敤鍒版棫鐨勬暟鎹�
+ List<SendRtpItem> sendRtpItemList = redisCatchStorage.querySendRTPServer(platform.getServerGBId(), channelId, gbStream.getStream());
+ if (!sendRtpItemList.isEmpty()) {
+ for (SendRtpItem rtpItem : sendRtpItemList) {
+ redisCatchStorage.deleteSendRTPServer(rtpItem);
+ }
+ }
if ("push".equals(gbStream.getStreamType())) {
sendRtpItem.setPlayType(InviteStreamType.PUSH);
if (streamPushItem != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
index 0cf6c39..6ee859a 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -40,6 +40,8 @@
void updateSendRTPSever(SendRtpItem sendRtpItem);
+ List<SendRtpItem> querySendRTPServer(String platformGbId, String channelId, String streamId);
+
/**
* 鏌ヨRTP鎺ㄩ�佷俊鎭紦瀛�
* @param platformGbId
@@ -192,6 +194,8 @@
void addDiskInfo(List<Map<String, Object>> diskInfo);
+ void deleteSendRTPServer(SendRtpItem sendRtpItem);
+
List<SendRtpItem> queryAllSendRTPServer();
List<Device> getAllDevices();
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
index d1e8052..97e4573 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -153,6 +153,25 @@
}
@Override
+ public List<SendRtpItem> querySendRTPServer(String platformGbId, String channelId, String streamId) {
+ String scanKey = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
+ + userSetting.getServerId() + "_*_"
+ + platformGbId + "_"
+ + channelId + "_"
+ + streamId + "_"
+ + "*";
+ List<SendRtpItem> result = new ArrayList<>();
+ List<Object> scan = RedisUtil.scan(redisTemplate, scanKey);
+ if (!scan.isEmpty()) {
+ for (Object o : scan) {
+ String key = (String) o;
+ result.add(JsonUtil.redisJsonToObject(redisTemplate, key, SendRtpItem.class));
+ }
+ }
+ return result;
+ }
+
+ @Override
public SendRtpItem querySendRTPServer(String platformGbId, String channelId, String streamId, String callId) {
if (platformGbId == null) {
platformGbId = "*";
@@ -268,6 +287,14 @@
}
}
+ /**
+ * 鍒犻櫎RTP鎺ㄩ�佷俊鎭紦瀛�
+ */
+ @Override
+ public void deleteSendRTPServer(SendRtpItem sendRtpItem) {
+ deleteSendRTPServer(sendRtpItem.getPlatformId(), sendRtpItem.getChannelId(),sendRtpItem.getCallId(), sendRtpItem.getServerId());
+ }
+
@Override
public List<SendRtpItem> queryAllSendRTPServer() {
String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
--
Gitblit v1.8.0