REST-MQ研发更好用的MQ(2)

来源:互联网 发布:捏脸数据 编辑:程序博客网 时间:2024/05/16 08:50
有了上一节的协议定义,本节来思考下如何实现。客户端的实现非常容易,先考虑服务端
整个MQ需要具有以下几个部分
1:消息接收
2:消息持久话
3:消息的分发,需要根据tv参数,发送给所有关注了此消息的消费者
4:需要个后台配置系统用来配置MQ的消息使用者
消息接受与消息持久化接收到发送发送的消息将其持久化起来,只要按照之前定义的规范接收dt和tv参数生成消息ID(消息id必须为全局唯一,或者系统内唯一)存储到数据库中,一般会数据库增删改查的都可以实现,插入成功后返回
{"code":200,"msg":""}
或失败后code为500
数据库设计也是十分简单的一张表
create table message_info(   mq_id                bigint not null comment '消息ID',   tv                   varchar(20) not null comment '频道名称',   content              text not null comment '消息内容',   create_time          datetime not null comment '创建时间',   primary key (mq_id));alter table message_info comment '消息信息表';


消息的分发收到消息后根据消息的频道找到对应的所有消费者,把消息进行复制后分发出去。说白了就是把一条数据复制成N份发送到不同的url去
需要考虑的是消息的处理状态,消费主机正在维护停止服务了,所以后面需要引入健康检查。但是挤压消息多的话也要注意流控,不能把消费主机给压死这些都是自己研发MQ的好处,需要什么功能就加吧:)
数据库设计需要存储消息和对应的消费者地址,另一张表用来存储消息的状态,失败次数。






配置系统应该是最简单的一个,使用两张表或一张表来记录对应的关系


一个频道可以被多个消费者关注,关注后所有发往该频道的收据都应该被接收到





0 0