Commit faac93613a997e226998018e1165412b33989f32

Authored by 648540858
1 parent 010b0967

优化启动后清理过期信息的逻辑

src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMKeepliveTimeoutListener.java
@@ -30,7 +30,7 @@ public class ZLMKeepliveTimeoutListener extends KeyExpirationEventMessageListene @@ -30,7 +30,7 @@ public class ZLMKeepliveTimeoutListener extends KeyExpirationEventMessageListene
30 public ZLMKeepliveTimeoutListener(RedisMessageListenerContainer listenerContainer) { 30 public ZLMKeepliveTimeoutListener(RedisMessageListenerContainer listenerContainer) {
31 super(listenerContainer); 31 super(listenerContainer);
32 // 配置springboot默认Config为空,即不让应用去修改redis的默认配置,因为Redis服务出于安全会禁用CONFIG命令给远程用户使用 32 // 配置springboot默认Config为空,即不让应用去修改redis的默认配置,因为Redis服务出于安全会禁用CONFIG命令给远程用户使用
33 - setKeyspaceNotificationsConfigParameter(""); 33 +// setKeyspaceNotificationsConfigParameter("");
34 } 34 }
35 35
36 /** 36 /**
src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOfflineEventListener.java
@@ -31,10 +31,8 @@ public class ZLMOfflineEventListener implements ApplicationListener<ZLMOfflineEv @@ -31,10 +31,8 @@ public class ZLMOfflineEventListener implements ApplicationListener<ZLMOfflineEv
31 31
32 @Override 32 @Override
33 public void onApplicationEvent(ZLMOfflineEvent event) { 33 public void onApplicationEvent(ZLMOfflineEvent event) {
34 -  
35 - if (logger.isDebugEnabled()) {  
36 - logger.debug("ZLM离线事件触发,ID:" + event.getMediaServerId());  
37 - } 34 +
  35 + logger.info("ZLM离线事件触发,ID:" + event.getMediaServerId());
38 // 处理ZLM离线 36 // 处理ZLM离线
39 mediaServerService.zlmServerOffline(event.getMediaServerId()); 37 mediaServerService.zlmServerOffline(event.getMediaServerId());
40 streamProxyService.zlmServerOffline(event.getMediaServerId()); 38 streamProxyService.zlmServerOffline(event.getMediaServerId());
src/main/java/com/genersoft/iot/vmp/media/zlm/event/ZLMOnlineEventListener.java
@@ -37,10 +37,8 @@ public class ZLMOnlineEventListener implements ApplicationListener<ZLMOnlineEven @@ -37,10 +37,8 @@ public class ZLMOnlineEventListener implements ApplicationListener<ZLMOnlineEven
37 37
38 @Override 38 @Override
39 public void onApplicationEvent(ZLMOnlineEvent event) { 39 public void onApplicationEvent(ZLMOnlineEvent event) {
40 -  
41 - if (logger.isDebugEnabled()) {  
42 - logger.debug("ZLM上线事件触发,ID:" + event.getMediaServerId());  
43 - } 40 +
  41 + logger.info("ZLM上线事件触发,ID:" + event.getMediaServerId());
44 streamPushService.zlmServerOnline(event.getMediaServerId()); 42 streamPushService.zlmServerOnline(event.getMediaServerId());
45 streamProxyService.zlmServerOnline(event.getMediaServerId()); 43 streamProxyService.zlmServerOnline(event.getMediaServerId());
46 44
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -565,7 +565,6 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR @@ -565,7 +565,6 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
565 redisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetup.getServerId(), id); 565 redisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetup.getServerId(), id);
566 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id; 566 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id;
567 redisUtil.del(key); 567 redisUtil.del(key);
568 - mediaServerMapper.delOne(id);  
569 } 568 }
570 569
571 @Override 570 @Override
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -154,47 +154,61 @@ public class StreamPushServiceImpl implements IStreamPushService { @@ -154,47 +154,61 @@ public class StreamPushServiceImpl implements IStreamPushService {
154 if (mediaServerItem == null) { 154 if (mediaServerItem == null) {
155 return; 155 return;
156 } 156 }
  157 + // 数据库记录
157 List<StreamPushItem> pushList = getPushList(mediaServerId); 158 List<StreamPushItem> pushList = getPushList(mediaServerId);
  159 + Map<String, StreamPushItem> pushItemMap = new HashMap<>();
  160 + // redis记录
  161 + List<StreamInfo> streamInfoPushList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
  162 + Map<String, StreamInfo> streamInfoPushItemMap = new HashMap<>();
158 if (pushList.size() > 0) { 163 if (pushList.size() > 0) {
159 - Map<String, StreamPushItem> pushItemMap = new HashMap<>();  
160 for (StreamPushItem streamPushItem : pushList) { 164 for (StreamPushItem streamPushItem : pushList) {
161 pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem); 165 pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem);
162 } 166 }
163 - zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{  
164 - if (mediaList == null) return;  
165 - String dataStr = mediaList.getString("data");  
166 -  
167 - Integer code = mediaList.getInteger("code");  
168 - List<StreamPushItem> streamPushItems = null;  
169 - if (code == 0 ) {  
170 - if (dataStr != null) {  
171 - streamPushItems = handleJSON(dataStr, mediaServerItem);  
172 - } 167 + }
  168 + if (streamInfoPushList.size() > 0) {
  169 + for (StreamInfo streamInfo : streamInfoPushList) {
  170 + streamInfoPushItemMap.put(streamInfo.getApp() + streamInfo.getStreamId(), streamInfo);
  171 + }
  172 + }
  173 + zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{
  174 + if (mediaList == null) return;
  175 + String dataStr = mediaList.getString("data");
  176 +
  177 + Integer code = mediaList.getInteger("code");
  178 + List<StreamPushItem> streamPushItems = null;
  179 + if (code == 0 ) {
  180 + if (dataStr != null) {
  181 + streamPushItems = handleJSON(dataStr, mediaServerItem);
173 } 182 }
  183 + }
174 184
175 - if (streamPushItems != null) {  
176 - for (StreamPushItem streamPushItem : streamPushItems) {  
177 - pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());  
178 - } 185 + if (streamPushItems != null) {
  186 + for (StreamPushItem streamPushItem : streamPushItems) {
  187 + pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
  188 + streamInfoPushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
179 } 189 }
180 - Collection<StreamPushItem> offlinePushItems = pushItemMap.values();  
181 - if (offlinePushItems.size() > 0) {  
182 - String type = "PUSH";  
183 - streamPushMapper.delAll(new ArrayList<>(offlinePushItems));  
184 - for (StreamPushItem offlinePushItem : offlinePushItems) {  
185 - JSONObject jsonObject = new JSONObject();  
186 - jsonObject.put("serverId", userSetup.getServerId());  
187 - jsonObject.put("app", offlinePushItem.getApp());  
188 - jsonObject.put("stream", offlinePushItem.getStream());  
189 - jsonObject.put("register", false);  
190 - jsonObject.put("mediaServerId", mediaServerId);  
191 - redisCatchStorage.sendStreamChangeMsg(type, jsonObject);  
192 - // 移除redis内流的信息  
193 - redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlinePushItem.getApp(), offlinePushItem.getStream());  
194 - } 190 + }
  191 + Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
  192 + if (offlinePushItems.size() > 0) {
  193 + String type = "PUSH";
  194 + streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
  195 + }
  196 + Collection<StreamInfo> offlineStreamInfoItems = streamInfoPushItemMap.values();
  197 + if (offlineStreamInfoItems.size() > 0) {
  198 + String type = "PUSH";
  199 + for (StreamInfo offlineStreamInfoItem : offlineStreamInfoItems) {
  200 + JSONObject jsonObject = new JSONObject();
  201 + jsonObject.put("serverId", userSetup.getServerId());
  202 + jsonObject.put("app", offlineStreamInfoItem.getApp());
  203 + jsonObject.put("stream", offlineStreamInfoItem.getStreamId());
  204 + jsonObject.put("register", false);
  205 + jsonObject.put("mediaServerId", mediaServerId);
  206 + redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
  207 + // 移除redis内流的信息
  208 + redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineStreamInfoItem.getApp(), offlineStreamInfoItem.getStreamId());
195 } 209 }
196 - }));  
197 - } 210 + }
  211 + }));
198 } 212 }
199 213
200 @Override 214 @Override
@@ -211,6 +225,8 @@ public class StreamPushServiceImpl implements IStreamPushService { @@ -211,6 +225,8 @@ public class StreamPushServiceImpl implements IStreamPushService {
211 List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type); 225 List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
212 if (streamInfoList.size() > 0) { 226 if (streamInfoList.size() > 0) {
213 for (StreamInfo streamInfo : streamInfoList) { 227 for (StreamInfo streamInfo : streamInfoList) {
  228 + // 移除redis内流的信息
  229 + redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
214 JSONObject jsonObject = new JSONObject(); 230 JSONObject jsonObject = new JSONObject();
215 jsonObject.put("serverId", userSetup.getServerId()); 231 jsonObject.put("serverId", userSetup.getServerId());
216 jsonObject.put("app", streamInfo.getApp()); 232 jsonObject.put("app", streamInfo.getApp());
@@ -218,8 +234,6 @@ public class StreamPushServiceImpl implements IStreamPushService { @@ -218,8 +234,6 @@ public class StreamPushServiceImpl implements IStreamPushService {
218 jsonObject.put("register", false); 234 jsonObject.put("register", false);
219 jsonObject.put("mediaServerId", mediaServerId); 235 jsonObject.put("mediaServerId", mediaServerId);
220 redisCatchStorage.sendStreamChangeMsg(type, jsonObject); 236 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
221 - // 移除redis内流的信息  
222 - redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());  
223 } 237 }
224 } 238 }
225 } 239 }