写点什么

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

作者:Beyond Ryan
  • 2022 年 1 月 02 日
  • 本文字数:489 字

    阅读完需:约 2 分钟

设计思路

将一个消息队列设计为一张表,可以采用 mq_message 的命名方式,所有消息放一张表,里面加一个“队列名称”的字段

1、复杂度低,新增消息类型的时候,直接名字类型区分即可

2、方便管理,查询效率高


消息主表如下:


CREATE TABLE `mq_message` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`topic` varchar(255) NOT NULL COMMENT '消息名称',
`data` text NOT NULL COMMENT '消息体',
`status` varchar(32) NOT NULL COMMENT '消息状态',
`retryCount` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
`timeout` int(11) NOT NULL DEFAULT '0' COMMENT '消息超时时间',
`effectTime` datetime NOT NULL COMMENT '消息生效时间,设置为固定时间点即可;如订单30min超时取消,可将 EffectTime 设置为30min后的时间点,到时将会自动消费',
`addTime` datetime NOT NULL COMMENT '生产消息的时间',
`log` text NOT NULL COMMENT '消息日志,如果有错误,可以记录错误日志',
PRIMARY KEY (`id`) USING BTREE,
KEY `I_t_s_e` (`topic`,`status`,`effectTime`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码


用户头像

Beyond Ryan

关注

学习如逆水行舟,不进则退 2018.09.07 加入

学习如逆水行舟,不进则退

评论

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