消息队列存储消息数据的 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】。文章转载请联系作者。
评论