From bf8fb0c51f4e7894a62636dede6c69a2a85d8458 Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期二, 27 四月 2021 15:35:22 +0800 Subject: [PATCH] 添加级联平台自动注册时失败自动重新注册 --- src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java | 70 ++++++++++++++++++++++++++++++----- 1 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java index 564d382..7e59910 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java @@ -1,16 +1,19 @@ package com.genersoft.iot.vmp.gb28181.event.platformNotRegister; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; -import com.genersoft.iot.vmp.gb28181.event.online.OnlineEvent; -import com.genersoft.iot.vmp.gb28181.event.online.OnlineEventListener; +import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; +import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; +import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform; +import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; -import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; + +import java.util.*; /** * @Description: 骞冲彴鏈敞鍐屼簨浠�,鏉ユ簮鏈変簩: @@ -26,20 +29,67 @@ @Autowired private IVideoManagerStorager storager; + @Autowired + private IRedisCatchStorage redisCatchStorage; @Autowired - private RedisUtil redis; + private SIPCommanderFroPlatform sipCommanderFroPlatform; + + @Autowired + private ZLMRTPServerFactory zlmrtpServerFactory; + + // @Autowired + // private RedisUtil redis; @Override public void onApplicationEvent(PlatformNotRegisterEvent event) { - if (logger.isDebugEnabled()) { - logger.debug("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); - } - ParentPlatform parentPlatform = storager.queryParentPlatById(event.getPlatformGbID()); + logger.info("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + + ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(event.getPlatformGbID()); if (parentPlatform == null) { - logger.debug("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝浣嗗钩鍙板凡缁忓垹闄�!!! 骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + logger.info("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝浣嗗钩鍙板凡缁忓垹闄�!!! 骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); return; } + // 鏌ヨ鏄惁鏈夋帹娴侊紝 濡傛灉鏈夊垯閮藉仠姝� + List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServer(event.getPlatformGbID()); + logger.info("鍋滄[ {} ]鐨勬墍鏈夋帹娴乻ize", sendRtpItems.size()); + if (sendRtpItems != null && sendRtpItems.size() > 0) { + logger.info("鍋滄[ {} ]鐨勬墍鏈夋帹娴�", event.getPlatformGbID()); + StringBuilder app = new StringBuilder(); + StringBuilder stream = new StringBuilder(); + for (int i = 0; i < sendRtpItems.size(); i++) { + if (app.length() != 0) { + app.append(","); + } + app.append(sendRtpItems.get(i).getApp()); + if (stream.length() != 0) { + stream.append(","); + } + stream.append(sendRtpItems.get(i).getStreamId()); + redisCatchStorage.deleteSendRTPServer(event.getPlatformGbID(), sendRtpItems.get(i).getChannelId()); + } + Map<String, Object> param = new HashMap<>(); + param.put("vhost","__defaultVhost__"); + param.put("app", app.toString()); + param.put("stream", stream.toString()); + zlmrtpServerFactory.stopSendRtpStream(param); + + } + + Timer timer = new Timer(); + SipSubscribe.Event okEvent = (responseEvent)->{ + timer.cancel(); + }; + logger.info("鍚戝钩鍙版敞鍐岋紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + sipCommanderFroPlatform.register(parentPlatform, null, okEvent); + // 璁剧疆娉ㄥ唽澶辫触鍒欐瘡闅�15绉掑彂璧蜂竴娆℃敞鍐� + timer.schedule(new TimerTask() { + @Override + public void run() { + logger.info("鍐嶆鍚戝钩鍙版敞鍐岋紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + sipCommanderFroPlatform.register(parentPlatform, null, okEvent); + } + }, 15000, 15000);//鍗佷簲绉掑悗鍐嶆鍙戣捣娉ㄥ唽 } } -- Gitblit v1.8.0