HTTP-MQ,我们不认为它仅仅是个MQ。市面上不管开源的还是收费的MQ确实不少,不过由于众所周知的原因几乎每个互联网公司都会自己搞自己的MQ。程序猿想不用什么框架、中间件的时候总能找出若干的个理由来回敬呢,于是在符合我国国情的情况下我们要开发一套具有自主知识产权的MQ,方便我们的工程师们把它应用在各个系统中调用。
好了以上解释了为什么要做一个MQ,接下来就要考虑如何做了。先介绍下本人所在公司的业务背景。目前公司主打新一代电子商务,以图片分享圈子社交带动电商业务,就是SNS+电商模式,截止到现在各个系统已经发展到几十个,系统之间的交互当然是必不可少的。MQ的调用流程,发送方发送消息到MQ服务,MQ服务转发消息到消息的消费者,消费者接受到消息后进行处理。
协议定义
发送方
对于消息发送者协议方面采用的HTTP,提供RESTAPI形式的MQ调用;采用REST api直接解决了各种语言的问题,内部项目的开发再无怨言。有同学可能会觉得http协议要慢一些,的确是单处理好的话跑满网卡也不是什么大问题,在设计这个mq的时候重点考虑的是易用性和可扩展性。API只有一个就是 /mq?dt=jsondata&tv=channel01
- dt 代表data,json格式的数据
- tv 发送的频道
使用方
消息的使用这只需要提供个url供mq消息发送服务器调用,所有的处理结果统一返回json格式如:{"status":200,"msg":""} status200就表示消息消费成功,当然同时会接收到mqid