默认
发表评论 13
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] 开启桥接,Web到APP的消息会隔一个掉一个(APP没收到,但web端显示发成功)
阅读(46681) | 评论(13 收藏 淘帖 1
背景:app和web端进行即时通信聊天。
方式:采用rabbitMQ作为中间件,两个队列分别为:q_app2web(app发送给web的)、q_web2app(web发送给app的)。
问题:app发送给web的消息都可以正常收到,但是web发送给app的消息会出现丢消息的情况(隔一个消息丢一个,如:发送了 1、2、3、4、5、6个消息,app只能收到 2、4、6,所以1、3、5就丢了,后端控制台也没有消费2、4、6消息的日志)。

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

标签:MobileIMSDK
上一篇:[已回复] MobileIMSDK Android端,连接断开后重连问题请教下一篇:[已解决] 求助MobileIMSDK的iOS端使用时205报错的问题
推荐方案
评论 13
你这是个奇怪的问题。我引导你怎么来追查问题,记得一定要按我说的做。

首先:你把所有客户端都关闭,Web服务端重启、APP服务关闭(切记),保证log都是干净无干扰的状态。

其次:你用web端发送两条消息(就是顺序1、顺序2),然后通过MQ的后台,看看这两条消息是否已在队列中。

你先把这一步做了,记得一定要关闭app的服务端。目的就是保证,web端桥接的消息是否正的到MQ。

因为IM消息环节太多,所以必须要保证每一个环节尽量在掌握中,所以你要按我说的做。做好了上面的测试后,把结果回复出来。然后我再引导你做下一步追踪!
引用:JackJiang 发表于 2018-11-14 18:44
你这是个奇怪的问题。我引导你怎么来追查问题,记得一定要按我说的做。

首先:你把所有客户端都关闭,We ...

结果如下:
web发送的第一条消息:rabbitMQ中没有,web端显示发送成功!
web发送的第二条消息:rabbitMQ有,可以正常走下去!
结果如下:
web发送的第一条消息:rabbitMQ中没有,web端显示发送成功!
web发送的第二条消息:rabbitMQ有,可以正常走下去!
引用:staunch 发表于 2018-11-14 19:06
结果如下:
web发送的第一条消息:rabbitMQ中没有,web端显示发送成功!
web发送的第二条消息:rabbitMQ ...

ok,你再确认一下,第一条消息,是否确实没有到MQ,那么再追一下,这条消息到底去哪里了。你可以顺着服务端代码,断点调试,一定要找出它到底去哪里了。

所有网络通信的数据都不会凭空消息,而追踪的目的,就是要找出它到底去哪里了
您的意思是第一条消息是发送给服务端了的,只是服务端没有放入到rabbitMQ吗?难道不是web直接把消息给rabbitMQ然后服务端去消费吗?
引用:staunch 发表于 2018-11-14 19:16
您的意思是第一条消息是发送给服务端了的,只是服务端没有放入到rabbitMQ吗?难道不是web直接把消息给rabbi ...

我是想让你确认,第一条有没有进mq。问题是需要一个一个环节排查,你才能聚焦定位嘛。
我确认第一条消息没有进MQ。我问上面那个问题是想知道,问题出在web端还是服务端。
引用:staunch 发表于 2018-11-15 14:39
我确认第一条消息没有进MQ。我问上面那个问题是想知道,问题出在web端还是服务端。

好,那就抛开MQ的干扰,你继续跟踪第一条消息到底去哪里了。

你按我的思路来追踪:
程序里的逻辑是,当你要发送的这条消息的接收者不在Web服务端时(不在在线列表里),就会走MQ桥接,所以,你要继续追踪这条消息到哪一个环节了(关注我说的这个桥接逻辑,读代码,然后加log)。

你也可以把这一整个过程的log全部贴出来,我也可以帮你看看
楼楼,你的问题解决了没啊?我也遇到一模一样的问题
引用:小乐 发表于 2018-12-20 15:49
楼楼,你的问题解决了没啊?我也遇到一模一样的问题

前天有个客户搞出了同样的问题,也是百思不得其解(因为理论上不应该出现这么诡异的现象),

最后找出原因是:nodejs服务器在win10下有bug,他部署到linux下后没有任何问题了,你也可以试试。可能win10太新了,而且像Nodejs、Nginx这种高性能方案,只会把windows当实验性平台的技术方案,用的话还是应该是linux为主,必竟linux才是高性能之道。
我的问题解决了,是因为我的两个node服务连接的同一个rabbitMQ,导致消息轮流分发了。

点评

JackJiang  说:
最终答案!  (6 年前)
引用:staunch 发表于 2018-12-21 09:47
我的问题解决了,是因为我的两个node服务连接的同一个rabbitMQ,导致消息轮流分发了。

好吧,服了你
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部