当前位置: 首页 > news >正文

开源统一消息中心:轻松实现多业务系统的消息分发与管理

开源统一消息中心:轻松实现多业务系统的消息分发与管理

一、为什么需要统一消息中心?

在企业信息化建设中,往往存在多个独立业务系统(如设备管理平台、执法系统、OA系统等),每个系统都可能需要向用户发送通知、告警或待办消息。传统做法是各自开发消息模块,导致重复建设、接口不统一、状态无法追踪等问题。

统一消息中心(Unified Message Platform,UMP)正是为解决这一痛点而生。它提供了一套标准化的消息收发能力,将消息分发、推送/拉取、状态回执、重试机制等通用功能集中管理,让业务系统只需关注自身逻辑,即可实现可靠的消息送达。

二、项目概述

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)状态严格按状态机流转:RECEIVEDDISTRIBUTINGDISTRIBUTEDPUSHED/PULLBIZ_RECEIVED/BIZ_PULLEDREAD
  • 支持重试状态(DIST_RETRYPUSH_RETRY),失败任务可自动重试。

5. 开箱即用的开放式API

  • 提供 RESTful 接口,覆盖发送、拉取、状态上报、查询、认证等所有操作。
  • 接口签名防重放,支持 MD5 校验,确保安全性。

四、技术架构

核心数据表

表名描述
ump_msg_main消息主表,存储消息内容、状态、发送方等
ump_msg_inbox收件箱表,个人消息接收记录
ump_msg_broadcast广播筒表,部门/自定义消息记录
ump_broadcast_receive_record广播接收记录表,按需存储个人接收/阅读状态
ump_msg_queue消息队列任务表,负责异步分发与重试
ump_poll_cursor拉取游标表,记录每个应用的轮询进度

关键流程

  1. 消息发送:业务系统调用/open/message/send→ 平台验证 → 根据fsdx类型写入收件箱或广播筒 → 创建队列任务 → 返回消息ID。
  2. 拉取消息:业务系统调用/open/message/poll→ 平台返回游标分页的未处理消息(个人按未读,广播按未上报)。
  3. 状态上报:业务系统处理完成后调用/open/message/received等接口 → 平台更新收件箱/广播接收记录状态 → 同步更新主表统计。

五、快速开始

1. 环境要求

  • JDK 17+
  • MySQL 8.0+
  • Maven 3.6+

2. 获取源码

gitclone https://github.com/radarfyh/unified-message-center.gitcdfeng-message-center

3. 初始化数据库

执行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.jar

6. 测试接口

以发送消息为例:

# 获取 tokencurl-XPOST"http://localhost:11100/oauth2/token"\-H"Authorization: Basic REVWSUNFX01HTVRfUExBVEZPUk06RE1QZTdmOGE5YjBjMWQyZTNmNGE1YjZjN2Q4ZTlmMGExYjI="\-H"Content-Type: application/x-www-form-urlencoded"\-d"grant_type=app_key&scope=server&timestamp=1700000000000&nonce=abc123&signature=xxx"# 发送个人消息curl-XPOST"http://localhost:11000/ump/open/message/send"\-H"Authorization: Bearer eyJ..."\-H"Content-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 ⭐ 支持一下!

http://www.jsqmd.com/news/524391/

相关文章:

  • 2026/3/23
  • Day20 | 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点
  • 大模型API中转推荐:A8 AI 600+模型统一路由与高可用部署,code编程、生图、视频大模型聚合应用
  • Python3.23第一次实验
  • 无需网络,离线运行:mPLUG-Owl3-2B本地多模态AI助手搭建实录
  • WAN2.2文生视频开源模型部署教程:镜像免配置+ComfyUI工作流热加载实操
  • 西门子 S7 - 200 PLC 与博图 V16、组态王 16 打造带烟雾报警的停车场组态
  • TypeScript 类型体操实战:从看不懂到手撕 5 道高频面试题
  • 2024 2025-2026-2 《Python程序设计》实验1报告
  • Goreplay实战:如何用3条命令搞定生产环境流量复制到测试服务器
  • 20252417 2025-2026-2 《Python程序设计》实验1报告
  • c语言之时间函数操作
  • [INFRA] EMR集群MetricsCollector组件功能和运行原理分析
  • 2026年五恒系统厂家推荐排行榜:别墅/大平层/洋房/叠拼/独栋/豪宅全屋定制,专业打造恒温恒湿恒氧恒洁恒静舒适生活空间 - 品牌企业推荐师(官方)
  • C++初始化列表、类型转换
  • 解决Android Studio中annotation-experimental-1.4.1.aar版本冲突的实战指南
  • DeepSpeed多卡通信避坑指南:all_to_all_single的5个常见错误及解决方法
  • 20241223 实验一《Python程序设计》实验报告
  • AGV调度算法深度解析:从避碰优化到千车并行的技术演进
  • 混合动力汽车Simulink整车模型:探索P2并联混动仿真的奇妙世界
  • 嵌入式网络调试利器:在ARM开发板上手把手编译tcpdump 4.99.4
  • 算法复杂度理论的边界与不可计算性探讨的技术7
  • 2026会议音响套装优质品牌推荐指南:报告厅音响、无纸化会议室、无纸化会议终端、无纸化会议软件、无纸化办公系统选择指南 - 优质品牌商家
  • 168开奖网源码API修复记录
  • 6.1.1 软件->PEP标准(PSF基金会):Python 标准库标准(Python Standard Library Specification)
  • 基于LBM的Xflow单相及两相流动模拟探索
  • CrossEntropyLoss参数详解:从reduction=‘none‘到loss.backward()的完整避坑指南
  • 【C++面经】轻舟智航自动驾驶应用软件开发实习岗位
  • 五大品牌设计培训机构横评——后浪教育引领未来人才培养 - 速递信息
  • ComfyUI-WanVideoWrapper:AI视频创作者的技术赋能平台