模块八作业
发布于: 3 小时前

作业:设计消息队列存储消息数据的 MySQL 表
设计思路以及考虑点
消息存储分为永久性消息和临时性消息。
一张表保存所有队列的消息,如果队列数量不多并且消息数量不多此方案可以,但是对于队列和消息较多的系统,如此设计将会影响数据查询、更新、插入的效率。多个消息表对应的表明 mq_xxx_msg_store。
消息处理结果需要有记录。
建表语句
--- 消息索引表CREATE TABLE `mq_queue_index` ( `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `type` int(3) DEFAULT NULL COMMENT '消息类型:1-临时消息存储;2-持久化消息存储', `store_table_name` varchar(255) DEFAULT NULL COMMENT '保存消息表的表名称', `store_id_index` bigint(32) DEFAULT NULL COMMENT '关联存储消息表的主键id', `store_location` varchar(255) DEFAULT NULL COMMENT '消息存储地点', `create_time` datetime DEFAULT NULL COMMENT '队列创建时间', `create_emp` bigint(32) DEFAULT NULL COMMENT '创建队列用户', `name` varchar(255) DEFAULT NULL COMMENT '队列名称', `route_key` bigint(32) DEFAULT NULL COMMENT '关联的路由id', `update_time` datetime DEFAULT NULL COMMENT '队列更新时间', `update_emp` bigint(32) DEFAULT NULL COMMENT '更新队列用户', PRIMARY KEY (`id`), KEY `store_index` (`store_id_index`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='队列索引表';
--- 消息存储表CREATE TABLE `mq_msg_store` ( `id` bigint(32) NOT NULL COMMENT '自增主键', `store_data` varchar(2048) DEFAULT NULL COMMENT '存储的消息', `create_time` datetime DEFAULT NULL, `consume_time` datetime DEFAULT NULL, `iz_ack` tinyint(1) DEFAULT '0' COMMENT '消息是否已经被确定,0-没有;1-确定', `iz_consume` tinyint(1) DEFAULT '0' COMMENT '消息是否被消费。0-没有被消费;1-被消费', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--- 消息处理记录表CREATE TABLE `mq_queue_result_log` ( `id` bigint(32) NOT NULL AUTO_INCREMENT, `queue_id` bigint(32) DEFAULT NULL COMMENT '关联 mq_queue_index', `consume_id` bigint(32) DEFAULT NULL COMMENT '消费者id', `result` int(2) DEFAULT NULL COMMENT '处理结果', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;复制代码
划线
评论
复制
发布于: 3 小时前阅读数: 3
NewBranSTONE
关注
还未添加个人签名 2017.10.27 加入
还未添加个人简介











评论