设计消息队列存储消息数据的 MySQL 表
设计思路
将一个消息队列设计为一张表,可以采用 mq_message 的命名方式,所有消息放一张表,里面加一个“队列名称”的字段
1、复杂度低,新增消息类型的时候,直接名字类型区分即可
2、方便管理,查询效率高
消息主表如下:
复制代码
本文字数: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;
学习如逆水行舟,不进则退 2018.09.07 加入
学习如逆水行舟,不进则退
促进软件开发及相关领域知识与创新的传播
评论