开源统一消息中心轻松实现多业务系统的消息分发与管理一、为什么需要统一消息中心在企业信息化建设中往往存在多个独立业务系统如设备管理平台、执法系统、OA系统等每个系统都可能需要向用户发送通知、告警或待办消息。传统做法是各自开发消息模块导致重复建设、接口不统一、状态无法追踪等问题。统一消息中心Unified Message PlatformUMP正是为解决这一痛点而生。它提供了一套标准化的消息收发能力将消息分发、推送/拉取、状态回执、重试机制等通用功能集中管理让业务系统只需关注自身逻辑即可实现可靠的消息送达。二、项目概述UMP 是一个基于 Spring Boot MyBatis-Plus 构建的轻量级消息中间件支持多种消息类型个人消息点对点、部门消息、自定义范围消息含组织、区域、角色等双模式分发推送模式主动回调业务方 拉取模式业务方主动轮询全生命周期管理消息发送 → 分发 → 接收/拉取 → 阅读 → 归档状态全程可追溯可靠重试失败消息自动重试支持指数退避超限后永久失败灵活认证基于 AppKey/AppSecret 的应用认证支持 JWT Token项目已在多个实际业务场景中验证具备高扩展性和稳定性。三、核心功能亮点1. 智能读写扩散策略个人消息USER采用“读扩散”模式消息写入收件箱表ump_msg_inbox每个接收者一条记录。查询时只需扫描单表适合小范围精准送达。部门/自定义消息DEPT/CUSTOM采用“写扩散”模式仅存储一条广播记录ump_msg_broadcast接收记录按需创建仅在业务方上报状态时写入有效避免海量数据存储。2. 广播接收记录按需创建接收记录表ump_broadcast_receive_record仅在业务系统上报“已接收”、“已拉取”或“已阅读”时生成采用UPSERT保证幂等。未上报时系统通过“候选广播集 - 已有记录”动态计算未处理消息无需预创建记录。3. 游标分页拉取拉取接口使用游标cursorId 时间戳,ID代替传统分页避免深度分页性能问题支持断点续传。4. 状态机管理消息主表ump_msg_main状态严格按状态机流转RECEIVED→DISTRIBUTING→DISTRIBUTED→PUSHED/PULL→BIZ_RECEIVED/BIZ_PULLED→READ。支持重试状态DIST_RETRY、PUSH_RETRY失败任务可自动重试。5. 开箱即用的开放式API提供 RESTful 接口覆盖发送、拉取、状态上报、查询、认证等所有操作。接口签名防重放支持 MD5 校验确保安全性。四、技术架构核心数据表表名描述ump_msg_main消息主表存储消息内容、状态、发送方等ump_msg_inbox收件箱表个人消息接收记录ump_msg_broadcast广播筒表部门/自定义消息记录ump_broadcast_receive_record广播接收记录表按需存储个人接收/阅读状态ump_msg_queue消息队列任务表负责异步分发与重试ump_poll_cursor拉取游标表记录每个应用的轮询进度关键流程消息发送业务系统调用/open/message/send→ 平台验证 → 根据fsdx类型写入收件箱或广播筒 → 创建队列任务 → 返回消息ID。拉取消息业务系统调用/open/message/poll→ 平台返回游标分页的未处理消息个人按未读广播按未上报。状态上报业务系统处理完成后调用/open/message/received等接口 → 平台更新收件箱/广播接收记录状态 → 同步更新主表统计。五、快速开始1. 环境要求JDK 17MySQL 8.0Maven 3.62. 获取源码gitclone https://github.com/radarfyh/unified-message-center.gitcdfeng-message-center3. 初始化数据库执行docs/sql/*.sql脚本脚本中含有数据库创建和所有表创建指令。4. 修改配置feng-config工程封装了nacos3.1.1。在nacos中修改数据库连接、Redis 配置等。5. 启动服务mvn cleaninstallcdfeng-message-center-biz/targetjava-jarfeng-message-center-biz-1.0.0.jar6. 测试接口以发送消息为例# 获取 tokencurl-XPOSThttp://localhost:11100/oauth2/token\-HAuthorization: Basic REVWSUNFX01HTVRfUExBVEZPUk06RE1QZTdmOGE5YjBjMWQyZTNmNGE1YjZjN2Q4ZTlmMGExYjI\-HContent-Type: application/x-www-form-urlencoded\-dgrant_typeapp_keyscopeservertimestamp1700000000000nonceabc123signaturexxx# 发送个人消息curl-XPOSThttp://localhost:11000/ump/open/message/send\-HAuthorization: Bearer eyJ...\-HContent-Type: application/json\-d{ yybs: DEVICE_MGMT_PLATFORM, fsdw: 石家庄市应急管理局, fsdwdm: SJZ_YJGLJ, fsr: 张三, fsrzjhm: 110101199001011234, fsdx: USER, xxlx: NOTICE, xxbt: 测试消息, xxnr: 这是一条测试消息内容, jsrzjhm: 110101199001011235, cldz: http://localhost:8089/api/test }更多接口示例详见项目 README。六、开源与社区GitHub 地址https://github.com/radarfyh/unified-message-center文档项目readme.md和docs/目录等。欢迎 Star、Fork、提交 Issue 和 PR。如有任何问题可在 GitHub 上提 Issue 或加入 QQ 群1094082817。七、未来规划支持更多消息渠道短信、邮件、钉钉、企业微信等增加消息模板管理与可视化配置完善监控告警支持 Prometheus 指标提供 Spring Boot Starter简化集成八、结语统一消息中心旨在帮助开发者快速构建可靠的消息分发能力让业务系统专注于核心业务。无论您是正在建设微服务架构还是希望统一内部消息入口UMP 都能成为您的得力助手。欢迎试用、反馈和贡献项目地址https://github.com/radarfyh/unified-message-center](https://github.com/radarfyh/unified-message-center)如果觉得有用别忘了点个 Star ⭐ 支持一下