feat: 实现Redis集成与Kafka消息处理优化
- 新增Redis集成模块,支持心跳写入与控制台日志队列 - 优化Kafka消费者实现,支持多实例与自动重连 - 改进消息处理器,支持批量处理与多层解码 - 更新数据库表结构,调整字段类型与约束 - 添加Redis与Kafka的配置项和环境变量支持 - 补充测试用例和文档说明
This commit is contained in:
@@ -3,11 +3,11 @@
|
||||
本文档说明数据产生者需要往 Kafka 队列推送的数据结构与推送方式。
|
||||
|
||||
## 1. Topic 与编码
|
||||
- Topic:默认 `bls-heartbeat`(以服务端配置为准,见 `src/config/config.js`)
|
||||
- Topic:默认 `blwlog4Nodejs-rcu-heartbeat-topic`(以服务端配置为准,见 `src/config/config.js`)
|
||||
- 编码:UTF-8
|
||||
- 建议消息格式:JSON(便于跨语言对接与灰度演进)
|
||||
|
||||
> 注意:当前服务端代码的“二进制解包”尚未实现,若你们已经有既定二进制协议,需要在 Processor 中落地对应解包逻辑,并在本文档补充协议细节。
|
||||
> 服务端会以 buffer 方式接收 Kafka message.value,并按 UTF-8 解码为 JSON。
|
||||
|
||||
## 2. 消息 Key(强烈建议)
|
||||
为了保证同设备消息更有序、便于消费端批量聚合:
|
||||
@@ -23,7 +23,7 @@
|
||||
| hotel_id | number/int | 12 | 酒店编号(int2 范围内) |
|
||||
| room_id | number/int | 1203 | 房间编号/房间标识(int4) |
|
||||
| device_id | string | "A1B2C3D4" | 设备唯一 ID(序列号/MAC/自定义编码) |
|
||||
| ip | string | "192.168.1.10" | IPv4/IPv6 字符串(落库为 inet) |
|
||||
| ip | string | "192.168.1.10:8080" | `IP:PORT` 字符串(落库为 varchar(21)) |
|
||||
| power_state | number/int | 1 | 取电状态(枚举值需统一标准) |
|
||||
| guest_type | number/int | 0 | 住客身份(住客/空房/保洁/维修等,枚举值需统一标准) |
|
||||
| cardless_state | number/int | 0 | 无卡取电/无卡策略状态(枚举) |
|
||||
@@ -61,6 +61,13 @@
|
||||
"meter": {"p": 123.4, "e_wh": 5678}
|
||||
}
|
||||
}
|
||||
|
||||
## 4.1 C# 生产者示例(与你们当前实现一致)
|
||||
```csharp
|
||||
var nas = JsonConvert.SerializeObject(s);
|
||||
var data = Encoding.UTF8.GetBytes(nas);
|
||||
// 将 data 作为 Kafka message.value 发送即可
|
||||
```
|
||||
```
|
||||
|
||||
## 5. 推送方式(实现建议)
|
||||
|
||||
Reference in New Issue
Block a user