QAUP_Management/test_trigger_route_collection.md

2.5 KiB
Raw Blame History

航空器路由触发式采集测试

修改摘要

已成功将航空器路由采集从周期性访问改为触发式访问:

主要变更

  1. 新增缓存机制

    • 添加了 routeRetrievalCache 缓存Map
    • 缓存键格式:{flightNo}:{type}:{time}
    • 配置项路由缓存过期时间默认2小时
  2. 修改触发逻辑

    • triggerRouteQueryByFlightNotification() 开始处添加重复检查
    • 成功获取路由后标记为已获取
    • 基于航班进出港通知的时间戳确保精确去重
  3. 禁用周期性采集

    • collectAircraftRouteAndStatus() 默认禁用
    • 通过配置项 data.collector.route.periodic-collection-enabled 控制
    • 保留原有方法作为应急备用
  4. 新增缓存管理

    • 定时清理过期缓存记录(每小时执行一次)
    • 详细日志记录便于监控

配置说明

application.yml 中可添加以下配置:

data:
  collector:
    route:
      cache-expiry-hours: 2  # 路由缓存过期时间(小时)
      periodic-collection-enabled: false  # 是否启用周期性采集(默认禁用)

预期效果

  1. 避免重复API调用:同一航班事件(相同航班号+类型+时间戳)的路由只会获取一次
  2. 事件驱动响应:完全基于航班进出港通知触发,响应更及时
  3. 减少系统负载取消周期性轮询减少不必要的API调用
  4. 保持数据完整性:每个航班事件都能准确获取和存储路由信息

关键日志示例

  • 首次获取🛫 航班通知触发路由查询: 航班号=CA8901, 类型=OUT, 时间=1732783090000
  • 重复跳过🔄 航班路由已获取过,跳过重复查询: 航班号=CA8901, 类型=OUT, 时间=1732783090000
  • 成功完成🚀 事件驱动的路由更新完成: 航班号=CA8901, 路由类型=OUT, 时间=1732783090000
  • 缓存清理清理过期路由缓存完成清理前5条清理后2条清理了3条记录

测试验证步骤

  1. 启动系统:确保 mock_airport.py 正在运行(提供航班进出港通知)
  2. 观察日志:查看是否有 "周期性路由采集已禁用" 的调试日志
  3. 监控触发:查看航班进出港通知是否正确触发路由查询
  4. 验证去重:同一航班事件应该只触发一次路由获取
  5. 检查缓存:验证缓存清理机制是否正常工作

回滚方案

如需恢复周期性采集,在配置文件中设置:

data:
  collector:
    route:
      periodic-collection-enabled: true