QAUP_Management/test_trigger_route_collection.md

70 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 航空器路由触发式采集测试
## 修改摘要
已成功将航空器路由采集从周期性访问改为触发式访问:
### 主要变更
1. **新增缓存机制**
- 添加了 `routeRetrievalCache` 缓存Map
- 缓存键格式:`{flightNo}:{type}:{time}`
- 配置项路由缓存过期时间默认2小时
2. **修改触发逻辑**
-`triggerRouteQueryByFlightNotification()` 开始处添加重复检查
- 成功获取路由后标记为已获取
- 基于航班进出港通知的时间戳确保精确去重
3. **禁用周期性采集**
- `collectAircraftRouteAndStatus()` 默认禁用
- 通过配置项 `data.collector.route.periodic-collection-enabled` 控制
- 保留原有方法作为应急备用
4. **新增缓存管理**
- 定时清理过期缓存记录(每小时执行一次)
- 详细日志记录便于监控
### 配置说明
`application.yml` 中可添加以下配置:
```yaml
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. **检查缓存**:验证缓存清理机制是否正常工作
## 回滚方案
如需恢复周期性采集,在配置文件中设置:
```yaml
data:
collector:
route:
periodic-collection-enabled: true
```