lzh a58ab1928e refactor(video): SIP 高频消息队列消费拆独立 Scheduler + 修 Catalog 事务自调用
背景:
  - 原先 Alarm / Keepalive / Catalog 三个业务 Handler 自带 @Scheduled,
    @Scheduled 会让 Spring 对业务类生成 CGLIB 代理,
    与 @EventListener / @Async 等场景叠加时容易出现"找不到方法"/
    重复包装等怪异行为。
  - CatalogResponseMessageHandler.executeTaskQueue 上标 @Transactional
    会导致空队列 50ms 触发一次空事务,浪费连接池;与此同时
    this.saveData(...) 是自调用,saveData 上的 @Transactional
    又根本不生效,事务语义双重翻车。

本次改动:
  - 新增 CatalogResponseMessageQueueScheduler 无接口 @Component,
    @Scheduled(fixedDelay=50) 驱动业务 Handler 的 executeTaskQueue。
  - Alarm / Keepalive 两个 QueueScheduler 补 @ConditionalOnProperty
    (video.sip-queue.enabled, matchIfMissing=true),三个调度器统一
    开关;注释对齐,标明关闭后消息会在内存堆积、需运维兜底。
  - CatalogResponseMessageHandler:
      · 去掉 executeTaskQueue 上的 @Scheduled + @Transactional,
        入口处 taskQueue.isEmpty() 直接 return,不再开空事务;
      · @Autowired @Lazy 注入自身代理 self,把 this.saveData(...)
        改成 self.saveData(...),让 saveData 上的 @Transactional
        真正生效(MyBatis 落库 + 区域/分组批写回到同一事务)。
2026-04-23 15:07:44 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
2026-04-16 15:28:49 +08:00
2025-12-31 11:48:19 +08:00
2025-12-31 11:48:19 +08:00
Description
aiot后端(微服务版)
MIT 20 MiB
Languages
Java 80.2%
PLpgSQL 12.7%
TSQL 6.7%
Python 0.2%