From 0e9cb5ceb6baeed953bd64a4b71d9d6bacb1798c Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 06 九月 2023 09:31:43 +0800
Subject: [PATCH] Merge pull request #1048 from lunasaw/wvp-dev-0901
---
src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java | 135 ++++++++++++++++++++++++++++-----------------
1 files changed, 84 insertions(+), 51 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
old mode 100644
new mode 100755
index d68591c..194e90f
--- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
@@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.service.redisMsg;
import com.alibaba.fastjson2.JSON;
+import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
@@ -38,80 +39,112 @@
@Autowired
private IVideoManagerStorage storage;
- private boolean taskQueueHandlerRun = false;
-
private ConcurrentLinkedQueue<Message> taskQueue = new ConcurrentLinkedQueue<>();
@Qualifier("taskExecutor")
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
+ @Autowired
+ private UserSetting userSetting;
+
@Override
public void onMessage(@NotNull Message message, byte[] bytes) {
+ // 娑堟伅绀轰緥锛� PUBLISH alarm_receive '{ "gbId": "", "alarmSn": 1, "alarmType": "111", "alarmDescription": "222", }'
logger.info("鏀跺埌鏉ヨ嚜REDIS鐨凙LARM閫氱煡锛� {}", new String(message.getBody()));
-
+ boolean isEmpty = taskQueue.isEmpty();
taskQueue.offer(message);
- if (!taskQueueHandlerRun) {
- taskQueueHandlerRun = true;
- logger.info("[绾跨▼姹犱俊鎭痌娲诲姩绾跨▼鏁帮細{}, 鏈�澶х嚎绋嬫暟锛� {}", taskExecutor.getActiveCount(), taskExecutor.getMaxPoolSize());
+ if (isEmpty) {
+// logger.info("[绾跨▼姹犱俊鎭痌娲诲姩绾跨▼鏁帮細{}, 鏈�澶х嚎绋嬫暟锛� {}", taskExecutor.getActiveCount(), taskExecutor.getMaxPoolSize());
taskExecutor.execute(() -> {
while (!taskQueue.isEmpty()) {
Message msg = taskQueue.poll();
+ try {
+ AlarmChannelMessage alarmChannelMessage = JSON.parseObject(msg.getBody(), AlarmChannelMessage.class);
+ if (alarmChannelMessage == null) {
+ logger.warn("[REDIS鐨凙LARM閫氱煡]娑堟伅瑙f瀽澶辫触");
+ continue;
+ }
+ String gbId = alarmChannelMessage.getGbId();
- AlarmChannelMessage alarmChannelMessage = JSON.parseObject(msg.getBody(), AlarmChannelMessage.class);
- if (alarmChannelMessage == null) {
- logger.warn("[REDIS鐨凙LARM閫氱煡]娑堟伅瑙f瀽澶辫触");
- continue;
- }
- String gbId = alarmChannelMessage.getGbId();
+ DeviceAlarm deviceAlarm = new DeviceAlarm();
+ deviceAlarm.setCreateTime(DateUtil.getNow());
+ deviceAlarm.setChannelId(gbId);
+ deviceAlarm.setAlarmDescription(alarmChannelMessage.getAlarmDescription());
+ deviceAlarm.setAlarmMethod("" + alarmChannelMessage.getAlarmSn());
+ deviceAlarm.setAlarmType("" + alarmChannelMessage.getAlarmType());
+ deviceAlarm.setAlarmPriority("1");
+ deviceAlarm.setAlarmTime(DateUtil.getNow());
+ deviceAlarm.setLongitude(0);
+ deviceAlarm.setLatitude(0);
- DeviceAlarm deviceAlarm = new DeviceAlarm();
- deviceAlarm.setCreateTime(DateUtil.getNow());
- deviceAlarm.setChannelId(gbId);
- deviceAlarm.setAlarmDescription(alarmChannelMessage.getAlarmDescription());
- deviceAlarm.setAlarmMethod("" + alarmChannelMessage.getAlarmSn());
- deviceAlarm.setAlarmPriority("1");
- deviceAlarm.setAlarmTime(DateUtil.getNowForISO8601());
- deviceAlarm.setAlarmType("1");
- deviceAlarm.setLongitude(0);
- deviceAlarm.setLatitude(0);
+ if (ObjectUtils.isEmpty(gbId)) {
+ if (userSetting.getSendToPlatformsWhenIdLost()) {
+ // 鍙戦�佺粰鎵�鏈夌殑涓婄骇
+ List<ParentPlatform> parentPlatforms = storage.queryEnableParentPlatformList(true);
+ if (parentPlatforms.size() > 0) {
+ for (ParentPlatform parentPlatform : parentPlatforms) {
+ try {
+ deviceAlarm.setChannelId(parentPlatform.getDeviceGBId());
+ commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
+ } catch (SipException | InvalidArgumentException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
+ }
+ }
+ }else {
+ // 鑾峰彇寮�鍚簡娑堟伅鎺ㄩ�佺殑璁惧鍜屽钩鍙�
+ List<ParentPlatform> parentPlatforms = storage.queryEnablePlatformListWithAsMessageChannel();
+ if (parentPlatforms.size() > 0) {
+ for (ParentPlatform parentPlatform : parentPlatforms) {
+ try {
+ deviceAlarm.setChannelId(parentPlatform.getDeviceGBId());
+ commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
+ } catch (SipException | InvalidArgumentException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
+ }
+ }
- if (ObjectUtils.isEmpty(gbId)) {
- // 鍙戦�佺粰鎵�鏈夌殑涓婄骇
- List<ParentPlatform> parentPlatforms = storage.queryEnableParentPlatformList(true);
- if (parentPlatforms.size() > 0) {
- for (ParentPlatform parentPlatform : parentPlatforms) {
- try {
- commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
- } catch (SipException | InvalidArgumentException | ParseException e) {
- logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
+ // 鑾峰彇寮�鍚簡娑堟伅鎺ㄩ�佺殑璁惧鍜屽钩鍙�
+ List<Device> devices = storage.queryDeviceWithAsMessageChannel();
+ if (devices.size() > 0) {
+ for (Device device : devices) {
+ try {
+ deviceAlarm.setChannelId(device.getDeviceId());
+ commander.sendAlarmMessage(device, deviceAlarm);
+ } catch (InvalidArgumentException | SipException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
}
}
- }
- }else {
- Device device = storage.queryVideoDevice(gbId);
- ParentPlatform platform = storage.queryParentPlatByServerGBId(gbId);
- if (device != null && platform == null) {
- try {
- commander.sendAlarmMessage(device, deviceAlarm);
- } catch (InvalidArgumentException | SipException | ParseException e) {
- logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
- }
- }else if (device == null && platform != null){
- try {
- commanderForPlatform.sendAlarmMessage(platform, deviceAlarm);
- } catch (InvalidArgumentException | SipException | ParseException e) {
- logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
- }
+
}else {
- logger.warn("鏃犳硶纭畾" + gbId + "鏄钩鍙拌繕鏄澶�");
+ Device device = storage.queryVideoDevice(gbId);
+ ParentPlatform platform = storage.queryParentPlatByServerGBId(gbId);
+ if (device != null && platform == null) {
+ try {
+ commander.sendAlarmMessage(device, deviceAlarm);
+ } catch (InvalidArgumentException | SipException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
+ }else if (device == null && platform != null){
+ try {
+ commanderForPlatform.sendAlarmMessage(platform, deviceAlarm);
+ } catch (InvalidArgumentException | SipException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+ }
+ }else {
+ logger.warn("鏃犳硶纭畾" + gbId + "鏄钩鍙拌繕鏄澶�");
+ }
}
+ }catch (Exception e) {
+ logger.error("鏈鐞嗙殑寮傚父 ", e);
+ logger.warn("[REDIS鐨凙LARM閫氱煡] 鍙戠幇鏈鐞嗙殑寮傚父, {}",e.getMessage());
}
}
- taskQueueHandlerRun = false;
});
}
-
-
}
}
--
Gitblit v1.8.0