feat: 添加 Kafka 消费者和消息处理功能

- 新增 Kafka 消费者实现,支持消息处理和错误处理。
- 实现 OffsetTracker 类,用于跟踪消息偏移量。
- 新增消息解析和数据库插入逻辑,支持从 Kafka 消息构建数据库行。
- 实现 UDP 数据包解析功能,支持不同类型的 UDP 消息。
- 新增 Redis 错误队列处理,支持错误重试机制。
- 实现 Redis 客户端和集成类,支持日志记录和心跳机制。
- 添加 Zod 验证模式,确保 Kafka 消息有效性。
- 新增日志记录和指标收集工具,支持系统监控。
- 添加 UUID 生成工具,支持唯一标识符生成。
- 编写处理器逻辑的单元测试,确保功能正确性。
- 配置 Vite 构建工具,支持 Node.js 环境下的构建。
This commit is contained in:
2026-03-14 17:33:19 +08:00
parent d62f83b4a4
commit 677dda80b9
101 changed files with 14904 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
bls-onoffline-backend 规格说明
1. Kafka 数据结构
{
"HotelCode": "1085",
"MAC": "00:1A:2B:3C:4D:5E",
"HostNumber": "091123987456",
"RoomNumber": "8888房",
"EndPoint": "50.2.60.1:6543",
"CurrentStatus": "on",
"CurrentTime": "2026-02-02T10:30:00Z",
"UnixTime": 1770000235000,
"LauncherVersion": "1.0.0",
"RebootReason": "1"
}
2. Kafka 主题
Topicblwlog4Nodejs-rcu-onoffline-topic
3. 数据库结构
数据库log_platform
onoffline_record
字段:
guid varchar(32)
ts_ms int8
write_ts_ms int8
hotel_id int2
mac varchar(21)
device_id varchar(64)
room_id varchar(64)
ip varchar(21)
current_status varchar(10)
launcher_version varchar(10)
reboot_reason varchar(10)
主键ts_ms, mac, device_id, room_id
按 ts_ms 每日分区
G5库结构双写临时接入
库同为log_platform
onoffline_record_g5
差异字段:
- guid 为 int4由库自己生成。
- record_source 固定为 CRICS。
- current_status 为 int2on映射为1off映射为2其余为0。
支持通过环境变量开关双写。
4. 数据处理规则
非重启数据reboot_reason 为空或不存在current_status 取 CurrentStatus
重启数据reboot_reason 不为空current_status 固定为 on
其余字段直接按 Kafka 原值落库,空值不补 0