当前位置: 首页 > wzjs >正文

html5企业网站开发东莞东坑网站建设

html5企业网站开发,东莞东坑网站建设,免费建站网站一级,网上广告设计培训目录 一、问题分析 二、解决思路 三、贴代码 四、总结 一、问题分析 按惯例上问题: 设备告警采用高电平持续模式:一次开,不主动关就一直处于告警状态。 并发时多个请求下发 setDVRAlarmOutConfig,导致状态混乱。 “开 -&g…

 

目录

一、问题分析

二、解决思路

三、贴代码

四、总结 


一、问题分析

按惯例上问题:

  • 设备告警采用高电平持续模式:一次开,不主动关就一直处于告警状态。

  • 并发时多个请求下发 setDVRAlarmOutConfig,导致状态混乱。

  • “开 -> 睡眠 -> 关” 这个链路若被中断或未串联,会导致设备长期处于告警状态,后续指令失效。

  • 有些设备存在 SDK 偶发失败或无响应等问题。

二、解决思路

  •  避免并发打断流程对每个 deviceIdsynchronized 锁;
  • 设置告警时做 两次兜底关
  • 使用线程池异步执行告警任务

三、贴代码

// 全局设备锁容器
private static final ConcurrentHashMap<String, Object> deviceLocks = new ConcurrentHashMap<>();
// 告警线程池(你可以封装成 @Async 或自己定义线程池)
private static final ExecutorService alarmExecutor = Executors.newFixedThreadPool(10);@GetMapping("autoAlarm")
@Operation(summary = "自动告警")
@Parameter(name = "deviceId", description = "设备ID", required = true)
@Parameter(name = "duration", description = "告警持续时间 单位 毫秒(不能超过10000毫秒)", required = true)
public CommonResult<String> autoAlarm(@RequestParam String deviceId, @RequestParam Integer duration) {Assert.isTrue(duration <= 10000, () -> new ServiceException("告警持续时间不能超过10000毫秒"));DeviceInfo info = SdkDevice.getDevice(deviceId);Assert.notNull(info, () -> new ServiceException(GlobalErrorCodeConstants.DEVICE_NOT_EXIST.getCode(),StrUtil.format("设备[{}]未注册", deviceId)));Assert.isTrue(info.getLoginHandle().longValue() > 0,() -> new ServiceException(GlobalErrorCodeConstants.DEVICE_UN_REGISTERED.getCode(), "设备未注册"));alarmExecutor.submit(() -> {Object lock = deviceLocks.computeIfAbsent(deviceId, k -> new Object());synchronized (lock) {try {// step 1. 开启告警输出NetSDKLib.CFG_ALARMOUT_INFO onConfig = DhSdkServer.getDVRAlarmOutConfig(info.getLoginHandle(), deviceId);log.info("[{}] 设置前 mode: {}", deviceId, onConfig.nOutputMode);boolean open = DhSdkServer.setDVRAlarmOutConfig(info.getLoginHandle(), onConfig, 1, info.getAlarmChannelId(), deviceId);if (!open) {log.warn("[{}] 告警打开失败", deviceId);return;}log.info("[{}] 告警已打开,持续 {} 毫秒", deviceId, duration);ThreadUtil.sleep(duration);// step 2. 关闭告警输出boolean firstClose = tryCloseAlarm(info, deviceId, "first");if (!firstClose) {ThreadUtil.sleep(200);tryCloseAlarm(info, deviceId, "fallback");}} catch (Exception ex) {log.error("[{}] 告警流程异常: {}", deviceId, ex.getMessage(), ex);}}});return CommonResult.success("告警任务已下发,后台执行");
}private boolean tryCloseAlarm(DeviceInfo info, String deviceId, String phase) {try {NetSDKLib.CFG_ALARMOUT_INFO offConfig = DhSdkServer.getDVRAlarmOutConfig(info.getLoginHandle(), deviceId);boolean result = DhSdkServer.setDVRAlarmOutConfig(info.getLoginHandle(), offConfig, 2, info.getAlarmChannelId(), deviceId);log.info("[{}] {} 阶段关闭告警结果: {}", deviceId, phase, result);return result;} catch (Exception e) {log.warn("[{}] {} 阶段关闭异常: {}", deviceId, phase, e.getMessage());return false;}
}

四、总结 

  • 每个设备串行执行(防止并发导致状态错乱) 
  • 自动“兜底”第二次关闸
  • 不阻塞主线程(可支撑高并发请求)

文章转载自:

http://u7Wlk95V.ndcjq.cn
http://on0dR9EW.ndcjq.cn
http://xwMwb7sR.ndcjq.cn
http://0ryqLyvb.ndcjq.cn
http://lTChA5pC.ndcjq.cn
http://B1Mrgg77.ndcjq.cn
http://aGFFeskl.ndcjq.cn
http://Q5R1Dh4k.ndcjq.cn
http://pNsi2sgG.ndcjq.cn
http://cUbR91IH.ndcjq.cn
http://8lDVLJkP.ndcjq.cn
http://bKBZPD0N.ndcjq.cn
http://Fr3CIOlT.ndcjq.cn
http://nO9Rw7aL.ndcjq.cn
http://P9cDVRuT.ndcjq.cn
http://KiF6RcHJ.ndcjq.cn
http://Zg1PcgvW.ndcjq.cn
http://T8cSUXVm.ndcjq.cn
http://YgbN4p2Z.ndcjq.cn
http://tAju3ZtU.ndcjq.cn
http://U1eLRD4y.ndcjq.cn
http://4f3h03oV.ndcjq.cn
http://UQh1jOD9.ndcjq.cn
http://US74q4PF.ndcjq.cn
http://YLh1S4gm.ndcjq.cn
http://2jyGeu0Y.ndcjq.cn
http://m1A1oY8K.ndcjq.cn
http://InFZmOJO.ndcjq.cn
http://eO88qTRA.ndcjq.cn
http://isZIuhFu.ndcjq.cn
http://www.dtcms.com/wzjs/604114.html

相关文章:

  • 青岛建设银行网站茶叶网站建设公司
  • 射阳住房和城乡建设局网站做题网站中计算多项式的值怎么做
  • 简单网站开发流程图网络体系结构
  • 自己做的网站怎么爬数据网站建设财务处理
  • 重庆网站建设选夹夹虫wordpress 地址
  • 淘宝客网站开发视频wordpress文章不显示发布时间
  • 网站安全建设方案总结微信指数是什么意思
  • 专做外贸的网站杭州互联网大厂
  • 网站开发组播地址的作用网站式小程序
  • 杭州网站建设设计公司哪里做网站需求
  • 公司网站一定要备案吗微信公众平台 网站 对接
  • 成都网站搭建公司哪家好西安建设市场信息平台
  • 芜湖网站建设芜湖教育培训的网站建设
  • 最优做网站长春网站建设公司排名
  • 网站后台用什么浏览器临沂网站建设制作
  • 网站商城建设员招聘网站建设的成功经验
  • 学生做网站赚钱wordpress 文件服务
  • 一级a做片性视频 网站在线观看网站自助搭建平台
  • 最火的网站开发语言WordPress自适应播放器代码
  • 小橘子被做h网站wordpress关注功能
  • 宿舍网站建设目的手机商城小程序
  • 保险网站推荐图片 网站开发
  • 有自己网站做淘宝客赚钱5188站长平台
  • 网站开发备案费用建筑业大数据服务平台官网
  • 公众号网站怎么建口碑最好的购物网站平台
  • wordpress关于本站在哪做网站专业
  • 建设网站建站公司.net作业做网站
  • 云梦县网站开发wordpress 图片浮动
  • 做婚恋网站投入多少钱衡水网站建设找谁
  • 论坛网站建设源码下载教外国人做中国菜网站