开平消息系统
概述
对于开放平台,消息推送主要有几个要求:
- 消息补推策略:可以自定义补推策略,主要是设定补推次数和间隔两个维度
- 消息格式:需要对消息体整体做一个哈希加密
消息系统
初始化
考虑到消息系统可能随时重启,初始化应该拉取所有待发送消息,重新放入timeout队列
消息订阅
开放平台消息统一订阅内部消息推送,收到推送后,根据开平消息注册表生成对应的开平消息,并放入timeout队列。
消息推送
消息到时,推送到指定地址,成功后消息即完成
消息补推
消息发送失败,并且符合补推条件,生成补推消息,重新投入队列。
技术方案
目前,Tornado比较符合消息系统的需求。Tornado本身是一个Main Loop,他一方面可以作为server接受http消息,另一方面本身维护了一个timeout队列,满足消息定时补推的场景。
数据结构
开平消息表
# tbl_open_msg
id
source_id
notify_url
content
to_send_time
sent_time
status
index
开放消息类型
订单
- 订单创建
- 订单删除
- 订单修改
- 订单状态变动:分拣中,配送中,已配送
商品
- sku增删查改
- 商品分类增删查改