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

有了上一节的协议定义,本节来思考下如何实现。客户端的实现非常容易,先考虑服务端
整个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的好处,需要什么功能就加吧:)
数据库设计需要存储消息和对应的消费者地址,另一张表用来存储消息的状态,失败次数。






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


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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值