From faac93613a997e226998018e1165412b33989f32 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 10 十二月 2021 11:08:04 +0800
Subject: [PATCH] 优化启动后清理过期信息的逻辑
---
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java | 88 +++++++++++++++++++++++++------------------
src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java | 6 +--
src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java | 2
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | 1
src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java | 6 +--
5 files changed, 56 insertions(+), 47 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java
index 6b88ec9..c2ae319 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java
@@ -30,7 +30,7 @@
public ZLMKeepliveTimeoutListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
// 閰嶇疆springboot榛樿Config涓虹┖锛屽嵆涓嶈搴旂敤鍘讳慨鏀箁edis鐨勯粯璁ら厤缃紝鍥犱负Redis鏈嶅姟鍑轰簬瀹夊叏浼氱鐢–ONFIG鍛戒护缁欒繙绋嬬敤鎴蜂娇鐢�
- setKeyspaceNotificationsConfigParameter("");
+// setKeyspaceNotificationsConfigParameter("");
}
/**
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java
index b713552..a8b0e43 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java
@@ -31,10 +31,8 @@
@Override
public void onApplicationEvent(ZLMOfflineEvent event) {
-
- if (logger.isDebugEnabled()) {
- logger.debug("ZLM绂荤嚎浜嬩欢瑙﹀彂锛孖D锛�" + event.getMediaServerId());
- }
+
+ logger.info("ZLM绂荤嚎浜嬩欢瑙﹀彂锛孖D锛�" + event.getMediaServerId());
// 澶勭悊ZLM绂荤嚎
mediaServerService.zlmServerOffline(event.getMediaServerId());
streamProxyService.zlmServerOffline(event.getMediaServerId());
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java
index 8cac8a9..952a673 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java
@@ -37,10 +37,8 @@
@Override
public void onApplicationEvent(ZLMOnlineEvent event) {
-
- if (logger.isDebugEnabled()) {
- logger.debug("ZLM涓婄嚎浜嬩欢瑙﹀彂锛孖D锛�" + event.getMediaServerId());
- }
+
+ logger.info("ZLM涓婄嚎浜嬩欢瑙﹀彂锛孖D锛�" + event.getMediaServerId());
streamPushService.zlmServerOnline(event.getMediaServerId());
streamProxyService.zlmServerOnline(event.getMediaServerId());
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
index 7d9f748..0efb20a 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -565,7 +565,6 @@
redisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetup.getServerId(), id);
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id;
redisUtil.del(key);
- mediaServerMapper.delOne(id);
}
@Override
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index dcca0e5..63596b2 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -154,47 +154,61 @@
if (mediaServerItem == null) {
return;
}
+ // 鏁版嵁搴撹褰�
List<StreamPushItem> pushList = getPushList(mediaServerId);
+ Map<String, StreamPushItem> pushItemMap = new HashMap<>();
+ // redis璁板綍
+ List<StreamInfo> streamInfoPushList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
+ Map<String, StreamInfo> streamInfoPushItemMap = new HashMap<>();
if (pushList.size() > 0) {
- Map<String, StreamPushItem> pushItemMap = new HashMap<>();
for (StreamPushItem streamPushItem : pushList) {
pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem);
}
- zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{
- if (mediaList == null) return;
- String dataStr = mediaList.getString("data");
-
- Integer code = mediaList.getInteger("code");
- List<StreamPushItem> streamPushItems = null;
- if (code == 0 ) {
- if (dataStr != null) {
- streamPushItems = handleJSON(dataStr, mediaServerItem);
- }
- }
-
- if (streamPushItems != null) {
- for (StreamPushItem streamPushItem : streamPushItems) {
- pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
- }
- }
- Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
- if (offlinePushItems.size() > 0) {
- String type = "PUSH";
- streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
- for (StreamPushItem offlinePushItem : offlinePushItems) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("serverId", userSetup.getServerId());
- jsonObject.put("app", offlinePushItem.getApp());
- jsonObject.put("stream", offlinePushItem.getStream());
- jsonObject.put("register", false);
- jsonObject.put("mediaServerId", mediaServerId);
- redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
- // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
- redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlinePushItem.getApp(), offlinePushItem.getStream());
- }
- }
- }));
}
+ if (streamInfoPushList.size() > 0) {
+ for (StreamInfo streamInfo : streamInfoPushList) {
+ streamInfoPushItemMap.put(streamInfo.getApp() + streamInfo.getStreamId(), streamInfo);
+ }
+ }
+ zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{
+ if (mediaList == null) return;
+ String dataStr = mediaList.getString("data");
+
+ Integer code = mediaList.getInteger("code");
+ List<StreamPushItem> streamPushItems = null;
+ if (code == 0 ) {
+ if (dataStr != null) {
+ streamPushItems = handleJSON(dataStr, mediaServerItem);
+ }
+ }
+
+ if (streamPushItems != null) {
+ for (StreamPushItem streamPushItem : streamPushItems) {
+ pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
+ streamInfoPushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
+ }
+ }
+ Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
+ if (offlinePushItems.size() > 0) {
+ String type = "PUSH";
+ streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
+ }
+ Collection<StreamInfo> offlineStreamInfoItems = streamInfoPushItemMap.values();
+ if (offlineStreamInfoItems.size() > 0) {
+ String type = "PUSH";
+ for (StreamInfo offlineStreamInfoItem : offlineStreamInfoItems) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("serverId", userSetup.getServerId());
+ jsonObject.put("app", offlineStreamInfoItem.getApp());
+ jsonObject.put("stream", offlineStreamInfoItem.getStreamId());
+ jsonObject.put("register", false);
+ jsonObject.put("mediaServerId", mediaServerId);
+ redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
+ // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
+ redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineStreamInfoItem.getApp(), offlineStreamInfoItem.getStreamId());
+ }
+ }
+ }));
}
@Override
@@ -211,6 +225,8 @@
List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
if (streamInfoList.size() > 0) {
for (StreamInfo streamInfo : streamInfoList) {
+ // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
+ redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("serverId", userSetup.getServerId());
jsonObject.put("app", streamInfo.getApp());
@@ -218,8 +234,6 @@
jsonObject.put("register", false);
jsonObject.put("mediaServerId", mediaServerId);
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
- // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
- redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
}
}
}
--
Gitblit v1.8.0