feat: add cmpp inbound gateway listener

This commit is contained in:
hectorzhao
2026-07-07 16:19:14 +08:00
parent ad3b86ba0a
commit cc628d0214
14 changed files with 631 additions and 17 deletions
+12 -6
View File
@@ -221,17 +221,23 @@
#### 4.8.4 当前实现缺口标记
截至当前版本,Go Gateway 已有 HTTP 控制服务、健康检查、连接上游 SMSC 的 `ConnectChannel` 控制入口、gocmpp 协议 spike队列消息结构;但仍缺少生产验收所需的完整能力:
截至当前版本,Go Gateway 已有 HTTP 控制服务、健康检查、连接上游 SMSC 的 `ConnectChannel` 控制入口、gocmpp 协议 spike队列消息结构,并已补齐第一阶段下游 CMPP 入站能力:
- 实现 `17890` 入站 CMPP Server 监听。
- 实现下游客户 connect/login 鉴权、IP 白名单、应用级连接数限制和连接状态回写
- 实现下游 CMPP Submit 到平台发送请求的转换
- 实现客户侧 SubmitResp、最终 Deliver Receipt 和上行 Deliver 投递
- 实现 `17890` 入站 CMPP Server 监听,生产部署由 `GATEWAY_CMPP_ADDR=0.0.0.0:17890` 启动
- 实现下游客户 connect/login 鉴权CMPP `Source_Addr` 使用企业应用独立 6 位 `cmppAccount`,密码使用应用 CMPP 参数中的 `passwordCipher`Gateway 将 CMPP `AuthSource/Timestamp` 交由 NestJS 根据真实数据库校验
- 实现客户端应用 IP 白名单、应用状态、企业状态和企业认证状态校验;校验失败返回 CMPP connect 失败
- 实现下游 CMPP Submit 到平台发送请求的转换:Gateway 解码 CMPP 3.0 submit 内容,调用 NestJS 真实入站接口,NestJS 复用模板/签名/风控/余额/路由/队列优先级发送链路,接受后返回 CMPP submit_resp
仍缺少生产完整闭环能力:
- 应用级下游连接数限制和连接状态回写尚未完整产品化。
- 当前下游 CMPP Submit 通过 `sourceType=cmpp` 的系统批次兼容承载,尚未拆成完全独立于批量任务模型的单条发送模型。
- 未实现客户侧最终 Deliver Receipt 和上行 Deliver 投递。
- 未实现 Gateway 消费 `SubmitCommand` 并真实 submit 到上游通道的 worker。
- 未实现上游 deliver receipt 和普通上行 deliver 的生产解析与事件回传闭环。
- 未实现多连接窗口管理、在途消息恢复、断线重连后的消息状态处理。
这些缺口未补齐前,能把 CMPP 对接发送、17890 端口联调、客户账号密码鉴权、客户 IP 白名单或真实网关 submit/receipt/uplink 作为“生产已验收通过”。
这些缺口未补齐前,能把 `17890` 端口监听、客户账号密码鉴权、客户 IP 白名单和下游 submit 入平台发送链路作为第一阶段验收通过;不能把客户侧最终回执投递、上游真实运营商 submit/receipt/uplink 或完整多连接窗口恢复作为“生产已验收通过”。
### 4.9 回执与上行