开发文档
| 版本号 | 修改 | 修改时间 | 备注 |
|---|---|---|---|
| v1.0.0 | 王小琱 | 2024.12.20 | 初次修订 |
| v1.0.1 | 王小琱 | 2025.5.20 | 完善细节 |
1. 项目简介
- 服务名称:
exchange-notify-service-backend - 服务描述:本项目为交易所及金融业务提供多渠道通知服务,支持站内信、邮件、短信等消息推送,具备高可用、可扩展、易集成等特点。
- 所属模块:基础服务组件。
- 负责人:王小琱(wang746277441@gmail.com)
2. 功能描述
- 支持站内信、邮件等多种通知方式的发送。
- 支持异步消息推送,基于 RabbitMQ 实现消息队列。
- 支持消息模板、参数化内容。
- 支持消息状态追踪与查询。
- 支持多种业务场景的消息分发(如用户、平台、管理员等)。
3. 系统架构
3.1 主要技术栈
- 编程语言:[Go / Protocol Buffers v3]
- 服务框架:[Go Micro / GORM]
- 数据库:[MySQL]
- 消息队列:RabbitMQ
- API接口:[gRPC]
- 监控:[Prometheus]
- 容器编排:[Docker]
备注:以上技术栈仅为示例,具体版本以项目中的依赖文件为准。详见go.mod文件。
3.2 架构图
3.3 架构概括
- 接口层:对外暴露 gRPC 服务,接收业务系统的消息推送请求。
- 业务层:处理消息分发逻辑,支持多种消息类型和模板。
- 消息队列层:通过 RabbitMQ 实现异步消息推送和解耦。
- 存储层:MySQL 持久化消息数据,支持消息状态追踪。
- 第三方服务:如邮件服务等。
3.4 业务流程
3.4.1 通知发送流程
4. 依赖组件
| 组件 | 版本 | 说明 |
|---|---|---|
| MySQL | 8.x | 关系型数据库 |
| RabbitMQ | 3.x | 消息队列 |
| 邮件服务 | - | 外部邮件推送 |
5. 接口设计
详见 protos/ 目录下 proto 文件,或 docs/Interface_gRPC.md(如有)
使用
make doc可以重新生成接口文档。
6. 数据库设计
7. 项目部署
见部署文档
8. 错误码定义
| 错误码 | 错误信息 | 说明 |
|---|---|---|
| ErrSendMessage | 发送失败 | 消息推送失败 |
| ErrSystem | 内部错误 | 内部服务调用失败 |
| ErrInvalidParam | 参数错误 | 请求参数校验失败 |
| ErrQueryMessage | 查询失败 | 消息查询失败 |
9. FAQ
1. 如何增加邮件模版?
- 在 模版编辑平台 中增加邮件模版,并获取模版ID。
- 在
protos/proto/notify.proto文件中增加模版ID。 - 在
subscribe/subscriber.go文件中增加RabbitMQ订阅。 - 在
subscribe/event.go文件中增加消息处理。 - 在
internal/config/config_map.go文件中增加模版ID以及Title。
