架构训练模块 7
消息队列存储消息数据的 MySQL 表设计如下,将不同消息队列存储在同一张表里,以消息类型或时间进行分区。
消息类型表:
queue_name: varchar(64),消息队列名
queue_other_attributes: 消息队列其他的属性,可分为多个字段
queue_name: 作为主键
消息表:
id: bigint,消息 ID,自增长
msg_type: varchar(64),消息类型,取消息类型表的 queue_name 字段
message: text,消息内容
publisher: varchar(64),消息发布者唯一标识
publish_time: timestamp,消息发布时间
id:作为主键
publisher+publish_time:创建索引,方便发布者按时间查询自己发布了哪些消息
当消息增多时,可按消息类型或消息发布时间分区
消费表:
msg_id: bigint,消息 UUID,取消息表的 id 字段
consumer: varchar(64),消息消费者唯一标识
consume_time: timestamp,消息消费时间
consumer+ consume_time:作为主键,方便消费者按时间查询自己消费了哪些消息
msg_id: 创建索引,方便看一条消息被哪些消费者消费了
评论