feat: 实现Redis集成与Kafka消息处理优化
- 新增Redis集成模块,支持心跳写入与控制台日志队列 - 优化Kafka消费者实现,支持多实例与自动重连 - 改进消息处理器,支持批量处理与多层解码 - 更新数据库表结构,调整字段类型与约束 - 添加Redis与Kafka的配置项和环境变量支持 - 补充测试用例和文档说明
This commit is contained in:
@@ -1,9 +1,25 @@
|
||||
# 数据处理器规范
|
||||
|
||||
## 需求
|
||||
## Purpose
|
||||
本规范定义心跳处理器对 Kafka 消息 value 的解码/解压(含两层以内组合)、字段校验、转换为分区表写入结构,以及批量写库与失败丢弃/记录策略。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 心跳数据解包
|
||||
系统必须能够解包Kafka消息中的二进制心跳数据。
|
||||
系统 MUST 能够解包 Kafka 消息中的心跳数据。
|
||||
|
||||
#### Scenario: 支持常见编码/压缩(两层以内)
|
||||
- **WHEN** Kafka 消息 value 为下列任意形式时:
|
||||
- UTF-8 JSON(对象或数组)
|
||||
- base64(二进制)
|
||||
- gzip / deflate(zlib) / deflate(raw) / brotli 压缩后的二进制
|
||||
- **THEN** 系统应当按“最多两层”的策略尝试解码/解压
|
||||
- **AND** 成功时应还原为 JSON 对象或数组
|
||||
- **AND** 失败时应记录错误并丢弃该消息
|
||||
|
||||
#### Scenario: 支持包装结构
|
||||
- **WHEN** 解包得到的 JSON 为包装结构(例如包含 `data`/`payload`/`body` 字段)
|
||||
- **THEN** 系统应优先提取其中的对象作为心跳数据源
|
||||
|
||||
#### Scenario: 解包有效心跳数据
|
||||
- **WHEN** 接收到有效格式的Kafka心跳消息时
|
||||
@@ -16,7 +32,7 @@
|
||||
- **AND** 记录错误日志
|
||||
|
||||
### Requirement: 心跳数据验证
|
||||
系统必须能够验证解包后的心跳数据的有效性。
|
||||
系统 MUST 能够验证解包后的心跳数据有效性。
|
||||
|
||||
#### Scenario: 验证有效心跳数据
|
||||
- **WHEN** 解包后的心跳数据格式正确且字段完整时
|
||||
@@ -30,7 +46,7 @@
|
||||
- **AND** 丢弃该数据
|
||||
|
||||
### Requirement: 心跳数据转换
|
||||
系统必须能够将解包后的心跳数据转换为数据库存储格式。
|
||||
系统 MUST 能够将解包后的心跳数据转换为数据库存储格式。
|
||||
|
||||
#### Scenario: 转换心跳数据格式
|
||||
- **WHEN** 心跳数据验证通过时
|
||||
@@ -38,9 +54,13 @@
|
||||
- **AND** 添加必要的元数据
|
||||
|
||||
### Requirement: 批量处理支持
|
||||
系统必须支持批量处理心跳数据,提高处理效率。
|
||||
系统 MUST 支持批量处理心跳数据,提高处理效率。
|
||||
|
||||
#### Scenario: 批量处理心跳数据
|
||||
- **WHEN** 接收到大量心跳消息时
|
||||
- **THEN** 系统应该将数据分批处理
|
||||
- **AND** 每批处理的数量可配置
|
||||
|
||||
#### Scenario: Kafka 单条消息携带批量心跳
|
||||
- **WHEN** Kafka 消息 value 为 JSON 数组(批量心跳)
|
||||
- **THEN** 系统应将数组内每条心跳作为独立项进入批处理队列
|
||||
|
||||
Reference in New Issue
Block a user