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

目标

研发一套独立的消息系统,此系统进行集中配置管理供各业务系统使用,用于支撑站内信、短信通知、短信验证码、邮件、微信消息、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模块(暂不做)、通知信息配置模块;

posted @ 2017-10-27 09:08  Assion Yang  阅读(3558)  评论(0编辑  收藏  举报