写点什么

自研消息队列之消息队列数据库表设计

作者:晨亮
  • 2022 年 4 月 15 日
  • 本文字数:337 字

    阅读完需:约 1 分钟

总体架构

概要描述

  1. Java 语言编写消息队列服务器;

  2. 消息存储采用 MySQL;

  3. SDK 轮询服务器进行消息写入;

  4. SDK 轮询服务器进行消息读取;

  5. MySQL 双机保证消息尽量不丢;

  6. 使用 Netty 自定义消息格式,并且支持 HTTP 接口。


数据库表设计

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


考虑到 mysql 单表性能,这里采用每个队列一个表,表明是队列名称


发送消息

消息服务器接收发送消息的参数:队列名称,消息内容;

消息服务器根据队列名称找到表(如果未找到则新创建一个表),将消息内容保存一条新的记录;

消息发送失败,轮询到下一个节点重新发送消息;

消费消息

轮询从每个节点拉取消息,读取指定消息队列(按创建时间正序排列)的消费时间为空的第一条数据;

消费成功通知消息服务器,更新消费成功消息的消费时间


用户头像

晨亮

关注

还未添加个人签名 2018.10.28 加入

还未添加个人简介

评论

发布
暂无评论
自研消息队列之消息队列数据库表设计_「架构实战营」_晨亮_InfoQ写作平台