请选择 进入手机版 | 继续访问电脑版

默认
发表评论 9
请教可以使用MQ消息队列中间件做即时通讯系统吗?
ActiveMQ类似的消息队列 可以使用发布-订阅或P2P模式, 可以用于开发即时通讯系统吗, 感觉好像没什么应用, 会有什么缺陷吗?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:请问 ios 有没有http长连接的第三方库下一篇:请教一个Android的图片压缩方案,用于我的IM中

本帖已收录至以下技术专辑

推荐方案
评论 9
单纯从技术上看,IM系统的所有数据路径无非就是3种情况:
1)消息从A客户端 -> 经由服务器->再转发给B客户端:即C to S to C;
2)消息从A客户端直发服务端:即C to S;
2)消息从服务器直发A客户端:即S to C。

而消息中间件里的订阅模式:
即生产者推送消息到MQ、再由消费者从MQ读取,理论上是完全可以实现上面所说的3种消息传递路径的,如果要实现IM消息的生产和消费,基本上就是一个用户对应一个队列,而大量用户存在的情况下就是大量的队列产生,而每个队列的消息流转其实很少,试想一个人聊天时能发出多少消息?。

但存在一个问题的:
本身MQ被设计来的目的是处理大量的消息的,也即是通常的应用场景下,不会有多少队列存在,但每个队列每秒都要满负荷处理大量的消息,而假设你来开发MQ中间的话,你也能想到:你最大的优化目标是将每个队列的消息处理吞吐做到最大化,而不应该把处理大量的队列连接、断开、重连这些事情做为MQ存在的意义。

综上:
我的个人意见是,没有行不行,而是合不合适,所以就看你怎么选择了。有的人因为IM系统很小,为了省事或偷懒,也真就是用MQ来实现的,但除非你老板懂技术,不然谁管你。
签名: 《同为IM社交产品中的王者,QQ与微信到底有什么区别》http://www.52im.net/thread-2235-1-1.html
引用:JackJiang 发表于 2017-02-08 15:09
单纯从技术上看,IM系统的所有数据路径无非就是3种情况:
1)消息从A客户端 -> 经由服务器->再转发给B客户 ...

群主回的很详细,学习了
引用:JackJiang 发表于 2017-02-08 15:09
单纯从技术上看,IM系统的所有数据路径无非就是3种情况:
1)消息从A客户端 -> 经由服务器->再转发给B客户 ...

如果用MQ总线做消息中转,用一个发布订阅主题不用为每个用户开队列,这样就不用处理大量队列连接。但有另外一个问题,就是每个节点都要接收相同的消息,承受大量并发。有没有其他消息中转方案?我看了你之前叫我看的文章,没有发现好的架构。
签名: 冒个泡
引用:老衲 发表于 2017-06-01 11:25
如果用MQ总线做消息中转,用一个发布订阅主题不用为每个用户开队列,这样就不用处理大量队列连接。但有另 ...

“每个节点都要接收相同的消息,承受大量并发” 你说的这句是怎么理解的?
签名: 《同为IM社交产品中的王者,QQ与微信到底有什么区别》http://www.52im.net/thread-2235-1-1.html
引用:JackJiang 发表于 2017-06-01 12:01
“每个节点都要接收相同的消息,承受大量并发” 你说的这句是怎么理解的?

“承受大量并发”说错了。我们暂时用MQ做中转了
签名: 冒个泡
引用:JackJiang 发表于 2017-02-08 15:09
单纯从技术上看,IM系统的所有数据路径无非就是3种情况:
1)消息从A客户端 -> 经由服务器->再转发给B客户 ...

可以不用那么细化的 端到端的队列。
把客户端发来的所有请求,封装成业务数据,扔到队列;
同时业务服务器消费队列数据,这样基本上就可以达到通道的吞吐最大化使用了。
1发送消息通道
2推送消息通道
3系统消息通道
引用:Da.du.M_s28iT 发表于 2018-10-19 11:28
可以不用那么细化的 端到端的队列。
把客户端发来的所有请求,封装成业务数据,扔到队列;
同时业务服 ...

楼主的意思,其实是不想单独开发客户端网络通信层,而是直接用MQ的客户端来实现。不知我是否理解错了你的意思
签名: 《同为IM社交产品中的王者,QQ与微信到底有什么区别》http://www.52im.net/thread-2235-1-1.html
引用:JackJiang 发表于 2018-10-19 14:42
楼主的意思,其实是不想单独开发客户端网络通信层,而是直接用MQ的客户端来实现。不知我是否理解错了你的 ...

这样呀,楼主想要绕开自己维护的TCP长连接管理,使用MQ的发布订阅自身的会话存续机制,伪装成即时通讯?
说实话,我也想过这个问题,想用emq来做这个TCP长连接层,只不过总感觉好像太省事了,有些地方控制不住。
引用:Da.du.M_s28iT 发表于 2018-10-19 18:01
这样呀,楼主想要绕开自己维护的TCP长连接管理,使用MQ的发布订阅自身的会话存续机制,伪装成即时通讯?
...

是的,适用场景不一样,MQ也不是一个放之四海而皆准的万能钥匙
签名: 《同为IM社交产品中的王者,QQ与微信到底有什么区别》http://www.52im.net/thread-2235-1-1.html
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部