From 5b017324148ea92d96f9f16ade215463d6c712e5 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期六, 10 八月 2024 14:15:02 +0800 Subject: [PATCH] 优化:海康大华sdk断线重连机制 --- ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java index 0209056..4478731 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java @@ -33,6 +33,9 @@ import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -70,6 +73,23 @@ ardCamerasService.resetCameraLoginId(); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); ardCameras.stream().forEach(ardCamera -> asyncLogin(ardCamera)); + //寮�鍚櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔� + ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); + executor.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + try { + log.info("寮�濮嬫墽琛岀櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔�"); + List<Object> ardCameras = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY); + ardCameras.stream() + .map(object -> (ArdCameras) object) // 灏哋bject杞崲涓篈rdCameras + .filter(camera -> !GlobalVariable.loginMap.containsKey(camera.getId())) + .forEach(camera -> asyncLogin(camera)); + } catch (Exception ex) { + log.error("閲嶈繛鐩告満寮傚父锛�" + ex.getMessage()); + } + } + }, 30, 30, TimeUnit.SECONDS); // 浠诲姟寤惰繜 } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } -- Gitblit v1.9.3