1.介绍
多渠道消息触达平台是一个为应用开发者提供服务的平台,旨在解决发送消息的需求。
通过与消息触达平台的接口对接,开发者无需自行编写发送消息的代码,从而实现业务逻辑代码和发送消息逻辑代码的解耦。
能够让开发者能够更加专注于核心业务开发,提高开发效率,并且实现了消息发送的统一管理和多渠道的灵活选择。
2.项目特性
统一提供多个消息服务渠道:与多个第三方消息服务API进行对接,包括邮件、短信、钉钉群机器人、APP通知栏(push通知栏)、微信公众号(模板消息)和飞书机器人。
高性能消息推送:基于阻塞队列+消息队列+动态线程池处理消息任务,可处理大量消息任务
推送灵活:支持自定义消息内容实时、定时单个推送和批量推送
消息模板发送:
数据可视化:对每个消息模板的推送情况进行可视化图形展示
扩展灵活:可对消息发送业务流程进行业务扩展,定制专属推送流程
消息可靠推送:基于消息确认机制+延迟队列+线程池监控,对进入发送阶段的消息任务全链路追踪
定时模板链路追踪
人群文件定时推送:可上传人群文件对用户定时推送
3.技术选型
动态可监控线程池:引入该技术来处理各渠道消息发送任务,提高消息发送任务的并发量和处理速度。
Nacos:用于管理项目中的微服务实例和服务配置,通过动态管理线程池参数,提升系统的灵活性。
Redis:使用Redis实现消息的链路追踪,对消息的各个阶段进行实时监控、日志记录和消息发送记录,掌控消息的生命周期。
Xxl-job:用于定时启动定时消息任务,实现消息的定时发送功能。
RabbitMQ:作为消息中间件,将实时消息发送任务或定时消息任务交给RabbitMQ监听消费,实现消息发送的异步解耦,降低系统的耦合度。
Docker:用于统一部署各组件,简化系统的部署难度。
RabbitMQ延迟队列:通过使用延迟队列,处理超时消息任务,提高消息的可靠性。
Mysql:作为存储消息发送模板信息和第三方账号配置信息的数据库。
ECharts可视化:通过使用ECharts,对消息模板下发用户数、今日消息送达率、每天各时间段发送情况以及消息模板用户等数据进行可视化展示,方便进行消息模板的数据分析。
Sentinel限流:使用Sentinel来对消息发送接口进行限流,保障系统的稳定性。
Redisson分布式锁:对消息确认机制引入分布式锁减小锁粒度,提高并发量
4.目前支持的渠道消息类型
邮箱
- 支持文本、HTML类型
- 支持网络附件和本地附件推送
短信
- 阿里云:支持手机号回执拉取
- 腾讯云:支持手机号回执拉取、账号回执拉取
APP通知栏
微信公众号
- 模板消息
钉钉群机器人
- 文本
- Markdown
- 链接消息
- 卡片消息
- FeedCard
飞书机器人
- 文本
部分演示图
目前项目处于完善阶段,如有不足请多多包涵~