diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java index cb468230..8df42062 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java @@ -6,6 +6,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Component; import java.util.Map; @@ -22,7 +24,7 @@ public class RecordEndEventListener implements ApplicationListener handlerMap = new ConcurrentHashMap<>(); + private final static Map handlerMap = new ConcurrentHashMap<>(); public interface RecordEndEventHandler{ void handler(RecordInfo recordInfo); } @@ -35,11 +37,13 @@ public class RecordEndEventListener implements ApplicationListener {}", handlerMap.size()); if (handlerMap.size() > 0) { RecordEndEventHandler handler = handlerMap.get(deviceId + channelId); - if (handler !=null){ + logger.debug("handler => {}", handler); + if (handler != null){ handler.handler(event.getRecordInfo()); - if (count ==sumNum){ + if (count == sumNum){ handlerMap.remove(deviceId + channelId); } } @@ -53,6 +57,7 @@ public class RecordEndEventListener implements ApplicationListener deviceId: {}, channelId: {}", device,channelId); handlerMap.put(device + channelId, recordEndEventHandler); } /** @@ -61,6 +66,7 @@ public class RecordEndEventListener implements ApplicationListener deviceId: {}, channelId: {}", device,channelId); handlerMap.remove(device + channelId); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java index f3170a5d..129d7734 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java @@ -13,9 +13,8 @@ import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo; import gov.nist.javax.sip.message.SIPRequest; +import lombok.extern.slf4j.Slf4j; import org.dom4j.Element; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -27,10 +26,9 @@ import javax.sip.message.Response; import java.text.ParseException; import java.util.List; +@Slf4j @Component public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler { - - private Logger logger = LoggerFactory.getLogger(RecordInfoQueryMessageHandler.class); private final String cmdType = "RecordInfo"; @Autowired @@ -99,12 +97,13 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp // 向国标设备请求录像数据 Device device = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId); DeviceChannel deviceChannel = storager.queryChannelInParentPlatform(parentPlatform.getServerGBId(), channelId); + log.debug("deviceId => {}, channelId => {}", deviceChannel.getDeviceId(),channelId); // 接收录像数据 recordEndEventListener.addEndEventHandler(deviceChannel.getDeviceId(), channelId, (recordInfo)->{ try { cmderFroPlatform.recordInfo(deviceChannel, parentPlatform, request.getFromTag(), recordInfo); } catch (SipException | InvalidArgumentException | ParseException e) { - logger.error("[命令发送失败] 国标级联 回复录像数据: {}", e.getMessage()); + log.error("[命令发送失败] 国标级联 回复录像数据: {}", e.getMessage()); } }); try { @@ -114,18 +113,18 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp try { responseAck(request, Response.OK); } catch (SipException | InvalidArgumentException | ParseException e) { - logger.error("[命令发送失败] 录像查询回复: {}", e.getMessage()); + log.error("[命令发送失败] 录像查询回复: {}", e.getMessage()); } }),(eventResult -> { // 查询失败 try { responseAck(request, eventResult.statusCode, eventResult.msg); } catch (SipException | InvalidArgumentException | ParseException e) { - logger.error("[命令发送失败] 录像查询回复: {}", e.getMessage()); + log.error("[命令发送失败] 录像查询回复: {}", e.getMessage()); } })); } catch (InvalidArgumentException | ParseException | SipException e) { - logger.error("[命令发送失败] 录像查询: {}", e.getMessage()); + log.error("[命令发送失败] 录像查询: {}", e.getMessage()); } }else if (channelSources.get(1).getCount() > 0) { // 直播流 @@ -133,13 +132,13 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp try { responseAck(request, Response.NOT_IMPLEMENTED); // 回复未实现 } catch (SipException | InvalidArgumentException | ParseException e) { - logger.error("[命令发送失败] 录像查询: {}", e.getMessage()); + log.error("[命令发送失败] 录像查询: {}", e.getMessage()); } }else { // 错误的请求 try { responseAck(request, Response.BAD_REQUEST); } catch (SipException | InvalidArgumentException | ParseException e) { - logger.error("[命令发送失败] 录像查询: {}", e.getMessage()); + log.error("[命令发送失败] 录像查询: {}", e.getMessage()); } } }