消息队列存储消息数据的 MySQL 表
设计思路
总体说明
一共需要三类表,
- 描述每个消息队列元信息的表,包含队列的基本信息,以及队列的配置,只需要一张表; 
- 记录订阅每个消息队列的消费者信息 
- 消息队列里具体的消息内容表,每个队列一张表。 
这样设计的好处一是队列之间的数据互不影响,二是表的数据量不会增长的很快,总量也不会很大。
流程描述
- 新建消息队列:记录队列名称和配置到 meta 表 
- 消费者订阅消息队列:记录客户端信息到 subscriber 表,方便后续消息进入队列后通知消费者 
- 消息到达消息队列:根据队列名称,找到该队列对应的消息内容表,记录消息 id、消息内容到 message 表 
- 查询 subscriber 表,找到队列的订阅者的 ip 等信息,发送新消息到达的通知 
- 消费者拿取消息,客服端查询未消费的消息,队列通过 subscriber 中记录的最大消息 id,将大于最大消息 id 的消息返回给客户端 
表设计
队列元信息表
表名:queue_meta
字段:
- id:队列 ID 
- name:队列名称 
订阅表
记录每个消费者当前消费到的最大消息 id
消息内容表
版权声明: 本文为 InfoQ 作者【Dean.Zhang】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5132ae12e9106c8d615bbfff】。文章转载请联系作者。











 
    
评论