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

默认
发表评论 8
[已解决] 求教MobileIMSDK和MobileIMSDK-web互通时消息间隔一条才能实时收到
web端发送给app客户端第一条消息node服务器收到消息

web发送第一条消息时node收到内容

web发送第一条消息时node收到内容
web端发送给app客户端第一条消息tomcat服务器收到消息

web发送第二条消息时tomcat收到消息

web发送第二条消息时tomcat收到消息

web端发送给app客户端第二条消息node服务器收到消息

node第二条

node第二条

web端发送给app客户端第二条消息tomcat服务器收到消息

tomcat第二条

tomcat第二条

app 只收到第一条依次类推 每次都是断一条 之后收到一条

app消息情况

app消息情况



tomcat使用版本7.0.0
mq版本3.6.5
erlang版本17.5 64位

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

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

推荐方案
评论 8
这个现象退出app后重新登陆就会受到之前丢掉的消息  做了离线处理了
好了,这个现实很有趣,但原因很简单:就是你的服务器环境下,可能同一个服务端可能还运行了另外的实例忘记了关闭(因为不只你一个人出现过这样的疏忽。。。。)。

很容易排查:就是把所有服务端关闭(最好是把物理服务器重启),然后确保只打开了唯一一个APP服务端、和唯一一个Web服务端。

交替出现收不到消息的原因是:如果同一个服务端存在两个或多个实例在运行的话,因为它们内部在MQ的消费者代码,所以交替从MQ里拿到了消息,而对于客户端而言,它只能实时收到它当前所登陆的实例的消息(另一个实例的消息就进入了离线逻辑了)

你仔细体会一下我上面的回复,然后,按照我的说的,来排查。你及时反馈结果哦!
签名: 早上好!
引用:JackJiang 发表于 2019-04-13 17:37
好了,这个现实很有趣,但原因很简单:就是你的服务器环境下,可能同一个服务端可能还运行了另外的实例忘记 ...

第一次打开tomcat 登陆到mq发现有两个连接连接了这正常吗 还是一个正常?
10.png
引用:sanzhimayi 发表于 2019-04-13 18:11
第一次打开tomcat 登陆到mq发现有两个连接连接了这正常吗 还是一个正常?

这是mq的技术细节,你不用管这此。你只要自已心里清楚,不要多个实例同时跑就行了。一切一实际运行情况为准。记得及时反馈。但前提是,你要理解我在3楼写的是什么意思
签名: 早上好!
引用:JackJiang 发表于 2019-04-13 18:16
这是mq的技术细节,你不用管这此。你只要自已心里清楚,不要多个实例同时跑就行了。一切一实际运行情况为 ...

问题已经解决 是一个eclipse和tomcat之间的一个很有意思的缓存机制造成的  由于过程比较啰嗦所以不太细说了 也是由于比较不细心的原因  谢谢吧主原理是对的 但确实很有意思 只有一个tomcat 一个程序 却每次启动都运行两个实例 但有一点给吧主说下mq 是可以看出运行实例情况的 重启服务器确保第一次开启tomcat在mq中会只有一个连接接入多个实例就会接入多个接入几个mq连接消息就会丢n-1个消息。 微信截图_20190414160827.png


微信截图_20190414160355.png

点评

JackJiang  说:
***题!OK!  (4 个月前)
引用:sanzhimayi 发表于 2019-04-14 16:18
问题已经解决 是一个eclipse和tomcat之间的一个很有意思的缓存机制造成的  由于过程比较啰嗦所以不太细说 ...

你理解了问题的原因,并解决了问题,是个好消息。

但是就像你图中截的这样,按MQ中的连接数来判定,这就涉及到具体的技术细节,除非对技术实现很了解,不然这个还是不能第一眼就能看出问题所在。比如下图中,RainbowChat和RainbowChat-Web互通时,正常情况下一共4个MQ连接。但重复运行的实例是加了一个还是2个,这个普通开发者不了解具体的实现细节的话,看这里的连接数其实也没多大的参考性。
11.jpg
签名: 早上好!
遇到同样问题,查半天,发现是tomcat配置问题,导致实例被加载两次

配置虚拟目录引起,如下配置:
<Host name="localhost" debug="0" appBase="webapps"  
       unpackWARs="true" autoDeploy="true"  
       xmlValidation="false" xmlNamespaceAware="false">  
   <Context path="" docBase="d:\myapp"/>  
</Host>  

我们在Host标签里配置了appBase="webapps",tomcat会去加载一次应用。
在<Context>里配置了一次docBase,tomcat会又去加载一次引用。
导致项目会加载二次。
解决:
<Host name="localhost" debug="0"   
       unpackWARs="true" autoDeploy="true"  
       xmlValidation="false" xmlNamespaceAware="false">  
   <Context path="" docBase="d:\myapp"/>  
</Host>  

去掉appBase="webapps"即可!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部