最近重构公司消息服务的架构设计
目标
研发一套独立的消息系统,此系统进行集中配置管理供各业务系统使用,用于支撑站内信、短信通知、短信验证码、邮件、微信消息、APP消息、IM等消息形式。
架构

1) 基于消息队列采用发布、订阅模式。消息的生产者为对外的消息接口,接收业务系统消息后将消息写入到消息队列指定的topic,订阅者对消息进行处理并行的发送消息。
2) 所有通知消息定义唯一“消息ID”来标识消息类型。
3) 通知消息由各消息模块(短信、邮件、站内信、微信、APP)自己负责本消息的发送,去读取消息节点配置信息,根据当前的消息ID判断自己是否需要发送消息,是则发送否则丢弃。
4) 消息体,消息体采用JSON报文格式,方便各系统之间对接。
消息数据定义
{
msghead:
{
msgtype:””,
msgid:””,
rcvuid:””,
rcvcid:””,
rcvmobile:””,
rcvemail:””,
time:””,
system:””
}
,
msgbody:
{
text:””,
noticemsg:””,
wxmsg:””,
appmsg:””,
immsg:””,
smsmsg:[{},{}]
}
}
| 
 字段  | 
 说明  | 
 值  | 
| 
 msghead  | 
 消息头  | 
 
  | 
| 
 Msgtype  | 
 消息类型  | 
 消息类型:notice/sms/email/im/wx  | 
| 
 Msgid  | 
 消息id  | 
 定义全局唯一  | 
| 
 Rcvuid  | 
 接收帐号id  | 
 
  | 
| 
 Rcvcid  | 
 接收公司id  | 
 
  | 
| 
 Rcvmobile  | 
 接收手机号  | 
 
  | 
| 
 Rcvemail  | 
 接收邮箱  | 
 
  | 
| 
 Time  | 
 发送时间  | 
 
  | 
| 
 System  | 
 发送系统模块  | 
 云仓  | 
| 
 Msgbody  | 
 消息体  | 
 
  | 
| 
 Text  | 
 文本消息内容  | 
 
  | 
| 
 Noticemsg  | 
 站内信消息内容  | 
 
  | 
| 
 Wxmsg  | 
 微信消息内容  | 
 
  | 
| 
 Appmsg  | 
 APP消息内容  | 
 
  | 
| 
 Immsg  | 
 IM消息内容  | 
 
  | 
| 
 Smsmsg  | 
 短信消息内容  | 
 标签->值数组,供短信模板使用  | 
项目结构
消息接口API(msg_api)
1) 负责接收业务系统发送消息请求,将消息写到消息队列中;
2) 提供接口供业务系统查询,如查询用户的站内信消息列表、查询验证码是否正确等;
3) 提供数据接口供管理平台使用,如配置信息发送结点;
短信处理程序(msg_handle_sms)
1) 负责订阅消息,读取消息进行短信发送;
2) 负责验证码的生成处理;
3) 数据操作调用消息接口API;
4) 通知消息需要读取配置信息决定当前消息发送或丢弃;
邮件处理程序(msg_handle_email)
1) 负责订阅消息,读取消息进行邮件发送;
2) 数据操作调用消息接口API;
3) 通知消息需要读取配置信息决定当前消息发送或丢弃;
站内信处理程序(msg_handle_notice)
1) 负责订阅消息,读取消息进行通知;
2) 通知消息需要读取配置信息决定当前消息发送或丢弃;
3) 数据操作调用消息接口API;
数据库
1) 使用一个消息数据库;
2) 数据库表分为短信模块、站内信模块、IM模块(暂不做)、通知信息配置模块;
                    
                
                
            
        
浙公网安备 33010602011771号