最近重构公司消息服务的架构设计

目标数据库

研发一套独立的消息系统,此系统进行集中配置管理供各业务系统使用,用于支撑站内信、短信通知、短信验证码、邮件、微信消息、APP消息、IM等消息形式。api

 

架构数组

 

 

1) 基于消息队列采用发布、订阅模式。消息的生产者为对外的消息接口,接收业务系统消息后将消息写入到消息队列指定的topic,订阅者对消息进行处理并行的发送消息。微信

2) 全部通知消息定义惟一“消息ID”来标识消息类型。架构

3) 通知消息由各消息模块(短信、邮件、站内信、微信、APP)本身负责本消息的发送,去读取消息节点配置信息,根据当前的消息ID判断本身是否须要发送消息,是则发送不然丢弃。app

4) 消息体,消息体采用JSON报文格式,方便各系统之间对接。ui

 

消息数据定义spa

 

 

 

{blog

  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模块(暂不作)、通知信息配置模块;