Skip to content

v-mars/notify

Repository files navigation

Notify

封装了钉钉、邮件、Slack、Telegram、企业微信等消息通知组件。

统一消息通知管理系统后端需求说明

为满足企业级应用对多渠道消息通知的统一管理需求,设计一套支持 Email、SMS、企业微信、飞书、钉钉、Webhook 等多种渠道,并可灵活扩展的消息通知管理系统。系统需提供标准化 API 接口,支持多渠道同时发送,实现消息模板管理、发送状态追踪及渠道配置管理。

核心功能

1. 渠道管理

  • 渠道注册与配置
    • 支持动态添加/删除消息渠道(Email、SMS、企业微信、飞书、钉钉、Webhook 等)
    • 每种渠道需配置专属参数(如 Email 的 SMTP 服务器/端口/账号,SMS 的 API 密钥,企业微信的 CorpID/AgentID 等)
    • 支持渠道启用/禁用状态管理,禁用后不再参与消息发送
    • 渠道扩展机制:通过接口标准化实现新渠道(如 WhatsApp、Slack)的无缝接入,无需修改核心逻辑

2. 消息模板管理

  • 模板定义
    • 支持按渠道类型创建模板(如 Email 模板含主题/正文,SMS 模板含文本内容)
    • 模板内容支持变量占位符(如{username}、{code}),发送时动态替换
    • 支持富文本(适用于企业微信、邮件等渠道)和纯文本模板
    • 模板版本控制:保留模板修改历史,支持版本回溯
    • 模板与渠道关联:一个模板可关联多个渠道(如 "验证码通知" 同时关联 SMS 和企业微信)

3. 消息发送与调度

  • 多渠道并发发送
    • 支持单次请求指定多个渠道(如同时发送 Email + 企业微信)
    • 各渠道发送过程并行处理,提升发送效率
  • 消息参数
    • 接收对象:支持单用户/多用户(如多个手机号、邮箱地址)
    • 内容指定:可直接传入内容或指定模板 ID + 变量参数
    • 发送优先级:支持设置消息优先级(高/中/低),高优先级消息优先处理
    • 定时发送:支持指定未来时间点发送消息
    • 批量发送:支持批量导入接收对象,一次性发送相同内容(或模板 + 变量)的消息

4. 发送状态跟踪

  • 全链路状态记录
    • 记录消息整体状态(待发送、发送中、已完成、部分失败、全部失败)
    • 记录各渠道单独状态(渠道 A 成功、渠道 B 失败及失败原因)
  • 失败重试机制
    • 支持配置重试策略(重试次数、重试间隔)
    • 针对临时错误(如网络波动)自动重试,永久错误(如账号不存在)终止重试
    • 消息日志:详细记录每条消息的发送时间、耗时、响应数据、错误信息等

5. 发送策略管理

  • 渠道 fallback 机制:当主渠道发送失败时,自动切换到备用渠道(如 SMS 失败后自动尝试企业微信)
  • 频率控制
    • 限制对同一接收对象的单位时间发送次数(如 1 小时内最多 5 条短信)
    • 限制单个渠道的单位时间发送总量,避免触发第三方接口限流
  • 黑白名单:支持配置全局或渠道级别的黑白名单,控制消息接收范围

技术实现

1. 架构设计

采用分层架构设计:

  • 接口层:提供 RESTful API 供外部调用
  • 业务层:处理消息组装、渠道选择、发送逻辑
  • 渠道层:各消息渠道的具体实现(基于统一接口)
  • 存储层:消息、模板、渠道配置的数据持久化

2. 核心流程

消息发送流程:

  1. 客户端调用 API,传入接收人、渠道列表、内容/模板参数
  2. 系统验证渠道有效性,加载模板并替换变量
  3. 生成消息主记录,状态设为"待发送"
  4. 对每个渠道,异步执行发送逻辑:
    • 调用对应渠道的 Sender 接口
    • 更新渠道发送记录状态
  5. 所有渠道处理完成后,更新消息主记录状态

渠道扩展流程:

  1. 新增渠道类型(如"slack")
  2. 实现 MessageSender 接口
  3. 在 SenderFactory 中注册该渠道
  4. 配置渠道参数并启用

非功能需求

1. 性能要求

  • 单节点支持每秒处理≥500 条消息请求
  • 多渠道并发发送时,单条消息整体处理延迟≤1 秒(不含第三方接口响应时间)
  • 支持水平扩展,通过增加节点提升吞吐量

2. 可靠性要求

  • 消息不丢失:通过持久化 + 消息队列确保消息至少被处理一次
  • 失败重试:临时错误自动重试,重试策略可配置
  • 系统可用性:≥99.9%,支持故障节点自动切换

3. 安全性要求

  • 敏感配置加密:渠道的密钥、账号等信息加密存储
  • 消息内容加密:支持对敏感消息内容(如验证码)加密传输
  • 接口鉴权:所有 API 接口需通过 Token 或签名验证

4. 可观测性

  • 完善日志:记录消息全生命周期日志,支持问题追溯
  • 监控指标:各渠道发送量、成功率、响应时间、错误类型等
  • 告警机制:当渠道成功率低于阈值(如 90%)时触发告警 // ... existing code ... 消息通知的统一管理需求,设计一套支持 Email、SMS、企业微信、飞书、钉钉、Webhook 等多种渠道,并可灵活扩展的消息通知管理系统。系统需提供标准化 API 接口,支持多渠道同时发送,实现消息模板管理、发送状态追踪及渠道配置管理。 一、核心功能需求
  1. 渠道管理 渠道注册与配置: 支持动态添加 / 删除消息渠道(Email、SMS、企业微信、飞书、钉钉、Webhook 等) 每种渠道需配置专属参数(如 Email 的 SMTP 服务器 / 端口 / 账号,SMS 的 API 密钥,企业微信的 CorpID/AgentID 等) 支持渠道启用 / 禁用状态管理,禁用后不再参与消息发送 渠道扩展机制:通过接口标准化实现新渠道(如 WhatsApp、Slack)的无缝接入,无需修改核心逻辑
  2. 消息模板管理 模板定义: 支持按渠道类型创建模板(如 Email 模板含主题 / 正文,SMS 模板含文本内容) 模板内容支持变量占位符(如{username}、{code}),发送时动态替换 支持富文本(适用于企业微信、邮件等渠道)和纯文本模板 模板版本控制:保留模板修改历史,支持版本回溯 模板与渠道关联:一个模板可关联多个渠道(如 "验证码通知" 同时关联 SMS 和企业微信)
  3. 消息发送与调度 多渠道并发发送: 支持单次请求指定多个渠道(如同时发送 Email + 企业微信) 各渠道发送过程并行处理,提升发送效率 消息参数: 接收对象:支持单用户 / 多用户(如多个手机号、邮箱地址) 内容指定:可直接传入内容或指定模板 ID + 变量参数 发送优先级:支持设置消息优先级(高 / 中 / 低),高优先级消息优先处理 定时发送:支持指定未来时间点发送消息 批量发送:支持批量导入接收对象,一次性发送相同内容(或模板 + 变量)的消息
  4. 发送状态跟踪 全链路状态记录: 记录消息整体状态(待发送、发送中、已完成、部分失败、全部失败) 记录各渠道单独状态(渠道 A 成功、渠道 B 失败及失败原因) 失败重试机制: 支持配置重试策略(重试次数、重试间隔) 针对临时错误(如网络波动)自动重试,永久错误(如账号不存在)终止重试 消息日志:详细记录每条消息的发送时间、耗时、响应数据、错误信息等
  5. 发送策略管理 渠道 fallback 机制:当主渠道发送失败时,自动切换到备用渠道(如 SMS 失败后自动尝试企业微信) 频率控制: 限制对同一接收对象的单位时间发送次数(如 1 小时内最多 5 条短信) 限制单个渠道的单位时间发送总量,避免触发第三方接口限流 黑白名单:支持配置全局或渠道级别的黑白名单,控制消息接收范围

二、技术实现要求

  1. 架构设计 分层架构: 接口层:提供 RESTful API 供外部调用 业务层:处理消息组装、渠道选择、发送逻辑 渠道层:各消息渠道的具体实现(基于统一接口) 存储层:消息、模板、渠道配置的数据持久化
  2. 核心流程 消息发送流程: 客户端调用 API,传入接收人、渠道列表、内容 / 模板参数 系统验证渠道有效性,加载模板并替换变量 生成消息主记录,状态设为 "待发送" 对每个渠道,异步执行发送逻辑: 调用对应渠道的 Sender 接口 更新渠道发送记录状态 所有渠道处理完成后,更新消息主记录状态 渠道扩展流程: 新增渠道类型(如 "slack") 实现MessageSender接口 在 SenderFactory 中注册该渠道 配置渠道参数并启用 // ... existing code ...

Notify

封装了钉钉、邮件、Slack、Telegram、企业微信等消息通知组件。

统一消息通知管理系统后端需求说明

为满足企业级应用对多渠道消息通知的统一管理需求,设计一套支持 Email、SMS、企业微信、飞书、钉钉、Webhook 等多种渠道,并可灵活扩展的消息通知管理系统。系统需提供标准化 API 接口,支持多渠道同时发送,实现消息模板管理、发送状态追踪及渠道配置管理。

核心功能

1. 渠道管理

  • 渠道注册与配置
    • 支持动态添加/删除消息渠道(Email、SMS、企业微信、飞书、钉钉、Webhook 等)
    • 每种渠道需配置专属参数(如 Email 的 SMTP 服务器/端口/账号,SMS 的 API 密钥,企业微信的 CorpID/AgentID 等)
    • 支持渠道启用/禁用状态管理,禁用后不再参与消息发送
    • 渠道扩展机制:通过接口标准化实现新渠道(如 WhatsApp、Slack)的无缝接入,无需修改核心逻辑

2. 消息模板管理

  • 模板定义
    • 支持按渠道类型创建模板(如 Email 模板含主题/正文,SMS 模板含文本内容)
    • 模板内容支持变量占位符(如{username}、{code}),发送时动态替换
    • 支持富文本(适用于企业微信、邮件等渠道)和纯文本模板
    • 模板版本控制:保留模板修改历史,支持版本回溯
    • 模板与渠道关联:一个模板可关联多个渠道(如 "验证码通知" 同时关联 SMS 和企业微信)

3. 消息发送与调度

  • 多渠道并发发送
    • 支持单次请求指定多个渠道(如同时发送 Email + 企业微信)
    • 各渠道发送过程并行处理,提升发送效率
  • 消息参数
    • 接收对象:支持单用户/多用户(如多个手机号、邮箱地址)
    • 内容指定:可直接传入内容或指定模板 ID + 变量参数
    • 发送优先级:支持设置消息优先级(高/中/低),高优先级消息优先处理
    • 定时发送:支持指定未来时间点发送消息
    • 批量发送:支持批量导入接收对象,一次性发送相同内容(或模板 + 变量)的消息

4. 发送状态跟踪

  • 全链路状态记录
    • 记录消息整体状态(待发送、发送中、已完成、部分失败、全部失败)
    • 记录各渠道单独状态(渠道 A 成功、渠道 B 失败及失败原因)
  • 失败重试机制
    • 支持配置重试策略(重试次数、重试间隔)
    • 针对临时错误(如网络波动)自动重试,永久错误(如账号不存在)终止重试
    • 消息日志:详细记录每条消息的发送时间、耗时、响应数据、错误信息等

5. 发送策略管理

  • 渠道 fallback 机制:当主渠道发送失败时,自动切换到备用渠道(如 SMS 失败后自动尝试企业微信)
  • 频率控制
    • 限制对同一接收对象的单位时间发送次数(如 1 小时内最多 5 条短信)
    • 限制单个渠道的单位时间发送总量,避免触发第三方接口限流
  • 黑白名单:支持配置全局或渠道级别的黑白名单,控制消息接收范围

技术实现

1. 架构设计

采用分层架构设计:

  • 接口层:提供 RESTful API 供外部调用
  • 业务层:处理消息组装、渠道选择、发送逻辑
  • 渠道层:各消息渠道的具体实现(基于统一接口)
  • 存储层:消息、模板、渠道配置的数据持久化

2. 核心流程

消息发送流程:

  1. 客户端调用 API,传入接收人、渠道列表、内容/模板参数
  2. 系统验证渠道有效性,加载模板并替换变量
  3. 生成消息主记录,状态设为"待发送"
  4. 对每个渠道,异步执行发送逻辑:
    • 调用对应渠道的 Sender 接口
    • 更新渠道发送记录状态
  5. 所有渠道处理完成后,更新消息主记录状态

渠道扩展流程:

  1. 新增渠道类型(如"slack")
  2. 实现 MessageSender 接口
  3. 在 SenderFactory 中注册该渠道
  4. 配置渠道参数并启用

非功能需求

1. 性能要求

  • 单节点支持每秒处理≥500 条消息请求
  • 多渠道并发发送时,单条消息整体处理延迟≤1 秒(不含第三方接口响应时间)
  • 支持水平扩展,通过增加节点提升吞吐量

2. 可靠性要求

  • 消息不丢失:通过持久化 + 消息队列确保消息至少被处理一次
  • 失败重试:临时错误自动重试,重试策略可配置
  • 系统可用性:≥99.9%,支持故障节点自动切换

3. 安全性要求

  • 敏感配置加密:渠道的密钥、账号等信息加密存储
  • 消息内容加密:支持对敏感消息内容(如验证码)加密传输
  • 接口鉴权:所有 API 接口需通过 Token 或签名验证

4. 可观测性

  • 完善日志:记录消息全生命周期日志,支持问题追溯
  • 监控指标:各渠道发送量、成功率、响应时间、错误类型等
  • 告警机制:当渠道成功率低于阈值(如 90%)时触发告警 // ... existing code ... // ... existing code ...

Notify

封装了钉钉、邮件、Slack、Telegram、企业微信等消息通知组件。

统一消息通知管理系统后端需求说明

为满足企业级应用对多渠道消息通知的统一管理需求,设计一套支持 Email、SMS、企业微信、飞书、钉钉、Webhook 等多种渠道,并可灵活扩展的消息通知管理系统。系统需提供标准化 API 接口,支持多渠道同时发送,实现消息模板管理、发送状态追踪及渠道配置管理。

核心功能

1. 渠道管理

  • 渠道注册与配置
    • 支持动态添加/删除消息渠道(Email、SMS、企业微信、飞书、钉钉、Webhook 等)
    • 每种渠道需配置专属参数(如 Email 的 SMTP 服务器/端口/账号,SMS 的 API 密钥,企业微信的 CorpID/AgentID 等)
    • 支持渠道启用/禁用状态管理,禁用后不再参与消息发送
    • 渠道扩展机制:通过接口标准化实现新渠道(如 WhatsApp、Slack)的无缝接入,无需修改核心逻辑

2. 消息模板管理

  • 模板定义
    • 支持按渠道类型创建模板(如 Email 模板含主题/正文,SMS 模板含文本内容)
    • 模板内容支持变量占位符(如{username}、{code}),发送时动态替换
    • 支持富文本(适用于企业微信、邮件等渠道)和纯文本模板
    • 模板版本控制:保留模板修改历史,支持版本回溯
    • 模板与渠道关联:一个模板可关联多个渠道(如 "验证码通知" 同时关联 SMS 和企业微信)

3. 消息发送与调度

  • 多渠道并发发送
    • 支持单次请求指定多个渠道(如同时发送 Email + 企业微信)
    • 各渠道发送过程并行处理,提升发送效率
  • 消息参数
    • 接收对象:支持单用户/多用户(如多个手机号、邮箱地址)
    • 内容指定:可直接传入内容或指定模板 ID + 变量参数
    • 发送优先级:支持设置消息优先级(高/中/低),高优先级消息优先处理
    • 定时发送:支持指定未来时间点发送消息
    • 批量发送:支持批量导入接收对象,一次性发送相同内容(或模板 + 变量)的消息

4. 发送状态跟踪

  • 全链路状态记录
    • 记录消息整体状态(待发送、发送中、已完成、部分失败、全部失败)
    • 记录各渠道单独状态(渠道 A 成功、渠道 B 失败及失败原因)
  • 失败重试机制
    • 支持配置重试策略(重试次数、重试间隔)
    • 针对临时错误(如网络波动)自动重试,永久错误(如账号不存在)终止重试
    • 消息日志:详细记录每条消息的发送时间、耗时、响应数据、错误信息等

5. 发送策略管理

  • 渠道 fallback 机制:当主渠道发送失败时,自动切换到备用渠道(如 SMS 失败后自动尝试企业微信)
  • 频率控制
    • 限制对同一接收对象的单位时间发送次数(如 1 小时内最多 5 条短信)
    • 限制单个渠道的单位时间发送总量,避免触发第三方接口限流
  • 黑白名单:支持配置全局或渠道级别的黑白名单,控制消息接收范围

技术实现

1. 架构设计

采用分层架构设计:

  • 接口层:提供 RESTful API 供外部调用
  • 业务层:处理消息组装、渠道选择、发送逻辑
  • 渠道层:各消息渠道的具体实现(基于统一接口)
  • 存储层:消息、模板、渠道配置的数据持久化

2. 核心流程

消息发送流程:

  1. 客户端调用 API,传入接收人、渠道列表、内容/模板参数
  2. 系统验证渠道有效性,加载模板并替换变量
  3. 生成消息主记录,状态设为"待发送"
  4. 对每个渠道,异步执行发送逻辑:
    • 调用对应渠道的 Sender 接口
    • 更新渠道发送记录状态
  5. 所有渠道处理完成后,更新消息主记录状态

渠道扩展流程:

  1. 新增渠道类型(如"slack")
  2. 实现 MessageSender 接口
  3. 在 SenderFactory 中注册该渠道
  4. 配置渠道参数并启用

非功能需求

1. 性能要求

  • 单节点支持每秒处理≥500 条消息请求
  • 多渠道并发发送时,单条消息整体处理延迟≤1 秒(不含第三方接口响应时间)
  • 支持水平扩展,通过增加节点提升吞吐量

2. 可靠性要求

  • 消息不丢失:通过持久化 + 消息队列确保消息至少被处理一次
  • 失败重试:临时错误自动重试,重试策略可配置
  • 系统可用性:≥99.9%,支持故障节点自动切换

3. 安全性要求

  • 敏感配置加密:渠道的密钥、账号等信息加密存储
  • 消息内容加密:支持对敏感消息内容(如验证码)加密传输
  • 接口鉴权:所有 API 接口需通过 Token 或签名验证

4. 可观测性

  • 完善日志:记录消息全生命周期日志,支持问题追溯
  • 监控指标:各渠道发送量、成功率、响应时间、错误类型等
  • 告警机制:当渠道成功率低于阈值(如 90%)时触发告警 :当渠道成功率低于阈值(如 90%)时触发告警

About

邮箱、飞书、钉钉、企业微信消息通知

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages