开源 | 告别重复对接,这款消息推送平台全渠道搞定

在日常开发和运维中,你可能遇到过需要通过不同渠道(如邮件、钉钉、企业微信等)发送不同类型消息的情况。每当有新需求时,都需要重新编写对接逻辑;一旦某个部分变化,整个项目代码都要调整。这导致代码中出现大量重复的“消息发送”片段,增加了维护难度。此外,不同团队对通信渠道的偏好也使得单独为每种功能开发接口变得低效且容易出错。

好消息是,现在有一种工具可以解决这些问题——Message Nest。它是一个专为整合多种消息推送方式而设计的开源平台。通过Message Nest,你可以实现一次配置、多端分发,并支持灵活复用,从而简化开发流程,提高工作效率,增强系统的稳定性和可维护性。

前端

前端使用Vue 3 + TypeScript + Vite 技术栈,配合 TailwindCSS 与 shadcn-vue,界面干净利落,操作逻辑简单清晰。推送任务、模板管理、发送日志等功能统一集中在一个控制台中,日常使用非常顺手。

开发阶段支持热更新,调试高效;上线后既可以前后端一体化部署,也能拆分为前后端分离模式,适配不同团队的开发和部署习惯。

后端

后端基于 Go + Gin + GORM 构建,运行稳定、性能开销低。系统提供「任务」与「模板」两种消息推送模式:任务模式适合一次性动态消息,模板模式通过占位符复用内容,降低业务耦合。内置 JWT 鉴权、异步发送、日志与审计机制,消息流转清晰可追溯,适合生产环境使用。

核心能力一览

✅ 多渠道整合

内置支持多种通知方式:

  • 邮件
  • 钉钉
  • 企业微信
  • 微信测试公众号
  • 自定义Webhook
  • 站内消息

一个系统,统一管理。

模板化管理

消息内容不再写死在代码里:

  • 一次定义
  • 多处调用
  • 支持占位符动态替换

运营或产品人员也能直接修改文案,开发不再被反复打断。

动态接收者 & 群发支持

支持灵活指定接收人列表,轻松应对群发邮件、批量公众号通知等场景。

@提醒能力

在钉钉/企业微信中,可:

  • @ 指定手机号
  • @ 指定用户 ID
  • @ 全体成员

告警场景非常实用。

数据统计&可视化

内置消息统计能力,可查看:

  • 发送成功率
  • 渠道分布
  • 失败情况

部署方式

提供多种部署方式,无论是个人尝试还是正式投入使用,都能满足需求。

直接运行

使用最新的Release打包的可执行文件部署,无需部署前端页面。

  • 下载Release

访问GitHub Releases[1] 下载最新的系统版本对应的release,然后解压。

  • 创建数据库

新建一个MySQL数据库(或使用SQLite)。

  • 配置文件

新建conf文件夹,或者重命名项目中conf/app.example.iniconf/app.ini,然后修改配置。

1[app]


2JwtSecret = message-nest


3LogLevel = INFO


4


5[server]


6RunMode = release


7HttpPort = 8000


8ReadTimeout = 60


9WriteTimeout = 60


10; 注释EmbedHtml,启用单应用模式


11; EmbedHtml = disable


12


13[database]


14; 关闭SQL打印


15; SqlDebug = enable


16


17; Type = sqlite


18Type = mysql


19User = root


20Password = Aa123456


21Host = vm.server


22Port = 3308


23Name = yourDbName


24TablePrefix = message_

  • 启动项目

直接运行可执行文件,项目会自动创建表和账号。

1# Windows


2./Message-Nest.exe


3


4# Linux/Mac


5./Message-Nest

Docker 部署

  • 准备配置文件

新建 conf/app.ini 文件

1[app]


2JwtSecret = message-nest


3LogLevel = INFO


4


5[server]


6RunMode = release


7; docker模式下端口配置文件中只能为8000


8HttpPort =8000


9ReadTimeout =60


10WriteTimeout =60


11; 注释EmbedHtml,启用单应用模式


12; EmbedHtml = disable


13


14[database]


15; 关闭SQL打印


16; SqlDebug =enable


17


18; Type = sqlite


19Type = mysql


20User = root


21Password = Aa123456


22Host = vm.server


23Port =3308


24Name = yourDbName


25TablePrefix = message_

  • 启动容器

1docker run --rm-ti


2-p8000:8000 


3-v /your/path/conf:/app/conf 


4  ghcr.io/engigu/message-nest:latest