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