写点什么

消息队列存储消息数据的 MySQL 表

作者:Dean.Zhang
  • 2022 年 6 月 11 日
  • 本文字数:395 字

    阅读完需:约 1 分钟

设计思路

总体说明

一共需要三类表,

  1. 描述每个消息队列元信息的表,包含队列的基本信息,以及队列的配置,只需要一张表;

  2. 记录订阅每个消息队列的消费者信息

  3. 消息队列里具体的消息内容表,每个队列一张表

这样设计的好处一是队列之间的数据互不影响,二是表的数据量不会增长的很快,总量也不会很大。

流程描述

  1. 新建消息队列:记录队列名称和配置到 meta 表

  2. 消费者订阅消息队列:记录客户端信息到 subscriber 表,方便后续消息进入队列后通知消费者

  3. 消息到达消息队列:根据队列名称,找到该队列对应的消息内容表,记录消息 id、消息内容到 message 表

  4. 查询 subscriber 表,找到队列的订阅者的 ip 等信息,发送新消息到达的通知

  5. 消费者拿取消息,客服端查询未消费的消息,队列通过 subscriber 中记录的最大消息 id,将大于最大消息 id 的消息返回给客户端

表设计

队列元信息表

表名:queue_meta

字段:

  1. id:队列 ID

  2. name:队列名称


订阅表

记录每个消费者当前消费到的最大消息 id

消息内容表

发布于: 刚刚阅读数: 4
用户头像

Dean.Zhang

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
消息队列存储消息数据的 MySQL表_Dean.Zhang_InfoQ写作社区