设计消息队列存储消息数据的 MySQL 表格
所有消息放一个表格,这样便于管理,尤其是不同消息种类之间如果有因果关系的情况下容易按时序划分。表中有一栏表示消息组名称。同时每条消息按 subscriber 复制多份,每个 subscriber 一份。该表可以有以下几栏。message_id BIGINT NULL,这是自增 ID。[time] [datetime] NOT NULL, 这是消息产生时间戳。[message_group_name] char NOT NULL,这是消息组名称。[message] char NOT NULL, 这是消息本身。[subscriber_name] char NULL,这是这条消息的 subscriber[processed] TINYINT NOT NULL,这是这条消息是否被 subscriber 已经处理了。如果处理了, 这条消息可以被删除或者存在更低效的存储容器中。
索引:
message_id 是主键。
time: 这样便于按时间搜索。
message_group_name: 这样便于按消息组名称搜索。
subscriber_name: 这样便于按 subscriber 搜索。
评论