Commit f84eebdb75a6af1894b057b0255b01992bdd4f03

Authored by 648540858
1 parent d891b89c

优化部分hook订阅

src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -108,6 +108,7 @@ public class ZLMHttpHookListener { @@ -108,6 +108,7 @@ public class ZLMHttpHookListener {
108 subscribe.response(null, json); 108 subscribe.response(null, json);
109 } 109 }
110 } 110 }
  111 + mediaServerService.updateMediaServerKeepalive(mediaServerId, json.getJSONObject("data"));
111 112
112 JSONObject ret = new JSONObject(); 113 JSONObject ret = new JSONObject();
113 ret.put("code", 0); 114 ret.put("code", 0);
@@ -619,10 +620,15 @@ public class ZLMHttpHookListener { @@ -619,10 +620,15 @@ public class ZLMHttpHookListener {
619 subscribe.response(null, jsonObject); 620 subscribe.response(null, jsonObject);
620 } 621 }
621 } 622 }
  623 +
  624 + ZLMServerConfig zlmServerConfig = JSONObject.toJavaObject(jsonObject, ZLMServerConfig.class);
  625 + if (zlmServerConfig !=null ) {
  626 + mediaServerService.zlmServerOnline(zlmServerConfig);
  627 + }
622 JSONObject ret = new JSONObject(); 628 JSONObject ret = new JSONObject();
623 ret.put("code", 0); 629 ret.put("code", 0);
624 ret.put("msg", "success"); 630 ret.put("msg", "success");
625 - return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); 631 + return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
626 } 632 }
627 633
628 private Map<String, String> urlParamToMap(String params) { 634 private Map<String, String> urlParamToMap(String params) {
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -75,19 +75,9 @@ public class ZLMRunner implements CommandLineRunner { @@ -75,19 +75,9 @@ public class ZLMRunner implements CommandLineRunner {
75 if (startGetMedia != null) { 75 if (startGetMedia != null) {
76 startGetMedia.remove(zlmServerConfig.getGeneralMediaServerId()); 76 startGetMedia.remove(zlmServerConfig.getGeneralMediaServerId());
77 } 77 }
78 - mediaServerService.zlmServerOnline(zlmServerConfig);  
79 } 78 }
80 }); 79 });
81 80
82 - // 订阅 zlm保活事件, 当zlm离线时做业务的处理  
83 - hookSubscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_server_keepalive,new JSONObject(),  
84 - (MediaServerItem mediaServerItem, JSONObject response)->{  
85 - String mediaServerId = response.getString("mediaServerId");  
86 - if (mediaServerId !=null ) {  
87 - mediaServerService.updateMediaServerKeepalive(mediaServerId, response.getJSONObject("data"));  
88 - }  
89 - });  
90 -  
91 // 获取zlm信息 81 // 获取zlm信息
92 logger.info("[zlm] 等待默认zlm中..."); 82 logger.info("[zlm] 等待默认zlm中...");
93 83
@@ -113,6 +103,7 @@ public class ZLMRunner implements CommandLineRunner { @@ -113,6 +103,7 @@ public class ZLMRunner implements CommandLineRunner {
113 } 103 }
114 startGetMedia = null; 104 startGetMedia = null;
115 } 105 }
  106 + hookSubscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_server_started, new JSONObject());
116 // TODO 清理数据库中与redis不匹配的zlm 107 // TODO 清理数据库中与redis不匹配的zlm
117 }, 60 * 1000 ); 108 }, 60 * 1000 );
118 } 109 }
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -355,14 +355,15 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -355,14 +355,15 @@ public class MediaServerServiceImpl implements IMediaServerService {
355 */ 355 */
356 @Override 356 @Override
357 public void zlmServerOnline(ZLMServerConfig zlmServerConfig) { 357 public void zlmServerOnline(ZLMServerConfig zlmServerConfig) {
358 - logger.info("[ZLM] 正在连接 : {} -> {}:{}",  
359 - zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(), zlmServerConfig.getHttpPort());  
360 358
361 MediaServerItem serverItem = mediaServerMapper.queryOne(zlmServerConfig.getGeneralMediaServerId()); 359 MediaServerItem serverItem = mediaServerMapper.queryOne(zlmServerConfig.getGeneralMediaServerId());
362 if (serverItem == null) { 360 if (serverItem == null) {
363 logger.warn("[未注册的zlm] 拒接接入:{}来自{}:{}", zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(),zlmServerConfig.getHttpPort() ); 361 logger.warn("[未注册的zlm] 拒接接入:{}来自{}:{}", zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(),zlmServerConfig.getHttpPort() );
364 logger.warn("请检查ZLM的<general.mediaServerId>配置是否与WVP的<media.id>一致"); 362 logger.warn("请检查ZLM的<general.mediaServerId>配置是否与WVP的<media.id>一致");
365 return; 363 return;
  364 + }else {
  365 + logger.info("[ZLM] 正在连接 : {} -> {}:{}",
  366 + zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(), zlmServerConfig.getHttpPort());
366 } 367 }
367 serverItem.setHookAliveInterval(zlmServerConfig.getHookAliveInterval()); 368 serverItem.setHookAliveInterval(zlmServerConfig.getHookAliveInterval());
368 if (serverItem.getHttpPort() == 0) { 369 if (serverItem.getHttpPort() == 0) {
src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java
@@ -66,7 +66,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic @@ -66,7 +66,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
66 @Override 66 @Override
67 public void onMessage(Message message, byte[] bytes) { 67 public void onMessage(Message message, byte[] bytes) {
68 // TODO 增加队列 68 // TODO 增加队列
69 - logger.warn("[REDIS 消息-推流设备状态变化]: {}", new String(message.getBody())); 69 + logger.warn("[REDIS消息-推流设备状态变化]: {}", new String(message.getBody()));
70 taskQueue.offer(message); 70 taskQueue.offer(message);
71 71
72 if (!taskQueueHandlerRun) { 72 if (!taskQueueHandlerRun) {
@@ -76,7 +76,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic @@ -76,7 +76,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
76 Message msg = taskQueue.poll(); 76 Message msg = taskQueue.poll();
77 PushStreamStatusChangeFromRedisDto statusChangeFromPushStream = JSON.parseObject(msg.getBody(), PushStreamStatusChangeFromRedisDto.class); 77 PushStreamStatusChangeFromRedisDto statusChangeFromPushStream = JSON.parseObject(msg.getBody(), PushStreamStatusChangeFromRedisDto.class);
78 if (statusChangeFromPushStream == null) { 78 if (statusChangeFromPushStream == null) {
79 - logger.warn("[REDIS 消息]推流设备状态变化消息解析失败"); 79 + logger.warn("[REDIS消息]推流设备状态变化消息解析失败");
80 return; 80 return;
81 } 81 }
82 // 取消定时任务 82 // 取消定时任务
@@ -106,7 +106,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic @@ -106,7 +106,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
106 // 启动时设置所有推流通道离线,发起查询请求 106 // 启动时设置所有推流通道离线,发起查询请求
107 redisCatchStorage.sendStreamPushRequestedMsgForStatus(); 107 redisCatchStorage.sendStreamPushRequestedMsgForStatus();
108 dynamicTask.startDelay(VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED, ()->{ 108 dynamicTask.startDelay(VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED, ()->{
109 - logger.info("[REDIS 消息]未收到redis回复推流设备状态,执行推流设备离线"); 109 + logger.info("[REDIS消息]未收到redis回复推流设备状态,执行推流设备离线");
110 // 五秒收不到请求就设置通道离线,然后通知上级离线 110 // 五秒收不到请求就设置通道离线,然后通知上级离线
111 streamPushService.allStreamOffline(); 111 streamPushService.allStreamOffline();
112 }, 5000); 112 }, 5000);