写点什么

消息队列存储消息数据设计

作者:张靖
  • 2021 年 12 月 31 日
  • 本文字数:638 字

    阅读完需:约 2 分钟

设计消息队列存储消息数据的 MySQL 表格


【作业要求】

1. 包括表名、字段、索引;

2. 用文字描述设计思路和理由,例如:为什么设计某个索引?

3. 一页 PPT 即可。

【提示】

1. 需要考虑每个消息队列一张表还是所有消息放一张表里面加一个“队列名称”的字段。


一设计思路

1.所有消息队列共用一张表,减少设计的复杂度,易于维护。

2.消息 id 使用雪花算法生成全局唯一性 id。


二消息队列表结构


CREATE TABLE `msg_queue` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',  `queue_name` varchar(64) NOT NULL COMMENT '消息队列名称',  `msg_id` varchar(64) NOT NULL COMMENT '全局消息id,exp(订单id)',  `msg_content` longtext NOT NULL COMMENT '消息内容',  `status` smallint(6) NOT NULL DEFAULT '0' COMMENT '消息状态',  `error` int unsigned NOT NULL DEFAULT '0' COMMENT '错误次数',  `create_time` DATETIME NOT NULL COMMENT '创建时间',  `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',  PRIMARY KEY (`id`),  INDEX `QUEUE_NAME`(`queue_name`) USING BTREE,  INDEX `msg_id`(`msg_id`) USING BTREE,) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='记录业务系统消息';
复制代码

表名:记录业务系统消息

字段:

id:物理上自增主键

msg_id:业务上的唯一 ID

msg_content:消息内容

queue_name: 消息队列名称

status: 消息状态(0:发送成功 1:发送失败)

error:错误次数

create_time:创建时间

update_time:修改时间


索引:

queue_name

msg_id

id

发布于: 1 小时前
用户头像

张靖

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
消息队列存储消息数据设计