46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# CMPP Gateway Spike
|
|
|
|
阶段 0 的 `gateway/` 目录用于 Go CMPP Gateway 技术 Spike。当前环境未安装 Go 工具链,先保留工程边界和验收清单。
|
|
|
|
## 阶段 0 职责
|
|
|
|
- 读取一个 CMPP 通道配置。
|
|
- 基于 gocmpp 或评估后的协议库完成 connect、submit、deliver、active test、terminate。
|
|
- 消费 `cmpp.submit.commands`。
|
|
- 发布 `cmpp.submit.results`、`cmpp.receipt.events`、`cmpp.uplink.events`。
|
|
- 维护 `messageId -> sequenceId -> gatewayMessageId` 映射。
|
|
- 支持断线重连和后续消息继续消费。
|
|
- 暴露健康检查和最小指标。
|
|
- Redis Stream Submit Worker 使用持续补位的有界工作池并逐条 ACK;默认并发64,可用`GATEWAY_SUBMIT_WORKER_CONCURRENCY`调整,最大1024。供应商通道的真实上限仍由TPS限速、连接数和CMPP窗口共同决定。
|
|
|
|
## 建议骨架
|
|
|
|
```text
|
|
gateway/
|
|
├── cmd/
|
|
│ ├── gateway/
|
|
│ └── smsc-simulator/
|
|
└── internal/
|
|
├── cmpp/
|
|
├── config/
|
|
├── connection/
|
|
├── metrics/
|
|
├── queue/
|
|
└── tracker/
|
|
```
|
|
|
|
## 当前环境状态
|
|
|
|
已安装 Go 1.26.4。当前 Spike 已完成:
|
|
|
|
- 队列消息结构定义。
|
|
- `messageId -> sequenceId -> gatewayMessageId` 追踪器。
|
|
- 内存模拟 submit resp 与 deliver 回执链路。
|
|
- 15000 条内存链路压测基线。
|
|
- gocmpp 编译级接入点。
|
|
- gocmpp 本地 TCP connect、submit、submit resp、active test 集成测试。
|
|
- gocmpp deliver 回执 PDU pack/unpack 测试。
|
|
- 断线重连状态机测试。
|
|
|
|
阶段 0 决策:协议层优先直接依赖 gocmpp,服务层连接管理、重连、SEQID/MSGID 追踪、队列、限速、监控、幂等由本项目自研。
|