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 30 public ZLMKeepliveTimeoutListener(RedisMessageListenerContainer listenerContainer) {
31 31 super(listenerContainer);
32 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 31  
32 32 @Override
33 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 36 // 处理ZLM离线
39 37 mediaServerService.zlmServerOffline(event.getMediaServerId());
40 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 37  
38 38 @Override
39 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 42 streamPushService.zlmServerOnline(event.getMediaServerId());
45 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 565 redisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetup.getServerId(), id);
566 566 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id;
567 567 redisUtil.del(key);
568   - mediaServerMapper.delOne(id);
569 568 }
570 569  
571 570 @Override
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
... ... @@ -154,47 +154,61 @@ public class StreamPushServiceImpl implements IStreamPushService {
154 154 if (mediaServerItem == null) {
155 155 return;
156 156 }
  157 + // 数据库记录
157 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 163 if (pushList.size() > 0) {
159   - Map<String, StreamPushItem> pushItemMap = new HashMap<>();
160 164 for (StreamPushItem streamPushItem : pushList) {
161 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 214 @Override
... ... @@ -211,6 +225,8 @@ public class StreamPushServiceImpl implements IStreamPushService {
211 225 List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
212 226 if (streamInfoList.size() > 0) {
213 227 for (StreamInfo streamInfo : streamInfoList) {
  228 + // 移除redis内流的信息
  229 + redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
214 230 JSONObject jsonObject = new JSONObject();
215 231 jsonObject.put("serverId", userSetup.getServerId());
216 232 jsonObject.put("app", streamInfo.getApp());
... ... @@ -218,8 +234,6 @@ public class StreamPushServiceImpl implements IStreamPushService {
218 234 jsonObject.put("register", false);
219 235 jsonObject.put("mediaServerId", mediaServerId);
220 236 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
221   - // 移除redis内流的信息
222   - redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
223 237 }
224 238 }
225 239 }
... ...