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,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 | } |