Commit faac93613a997e226998018e1165412b33989f32
1 parent
010b0967
优化启动后清理过期信息的逻辑
Showing
5 changed files
with
53 additions
and
44 deletions
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 | } | ... | ... |