默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
回帖奖励 18 金币      回复本帖可获得 6 金币奖励! 每人限 2 次
rabbitmq 貌似一段时间后 会断开跟MobileIMSDK主服务器的连接
JackJiang ,你好,现在碰到一个问题,查了很多资料没有解决,恳请帮忙看下,不甚感激
我们用了你的web版im服务器和MobileIMSDK主服务器通过rabbitmq进行通信。
现在发现一个问题。MobileIMSDK主服务器运行一段时间,可能是24小时以后,可能是更久一点后,必然会出现与rabbitmq失去连接。要重启MobileIMSDK主服务器才可以,重启后马上就好了。
我用的rabbitmq和erLang的版本都是你推荐的那款。

我看了相关代码:
final Channel resumeChannel = conn.createChannel();
    String queueName = this.consumFromQueue;//queue name
   
    DefaultConsumer dc = new DefaultConsumer(resumeChannel)
@Override
     public void handleDelivery(String consumerTag,Envelope envelope,
       AMQP.BasicProperties properties,byte[] body)throws IOException{  //这个方法体没有抛出异常

启动的时候会去创建,那一般都是一直存在的。我观测到出现问题的时候,rabbitmq上面有几十个ready未消费的消息,但是 消费者个数是0,即此时没有Consumer,这个是为什么啊。。。我做了日志,handleDelivery方法体里边是正常的,没有什么异常记录
rabbitmq空闲没消息一段时间后,貌似会删掉我们的这个consumer

我网上查了一些资料,说是加resumeChannel.basicQos(1);   以及先主动act再处理消息,貌似都没用啊。跑一段时间,都要重启MobileIMSDK主服务器才会正常。而web版的im服务器没有问题。

服务器是阿里云的windows 2008 r2,软件版本都是你推荐的那些版本
前一段时间还从官方下载了最新版的MobileIMSDK主服务器代码,rabbitmq的work里边的相关代码跟旧版是一样的。

这个问题已经困扰了我们很久了,没有解决,现在也比较急。所以寻求原作者帮忙指导下。谢谢了。



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

上一篇:[已回复] MobileIMSDK移动端是否可实现创建、删除群聊,新消息提示?下一篇:[已回复] 请问mobileIMSDK里有视频会议的吗?
推荐方案
评论 8

我之前就已经做了这个工作,但是没有异常抛出啊,日志里面都没有记录到
我这个问题就是,启动后可能几十个小时内都是正常的。后面程序有空闲了好几个小时 就这样了
看看还有什么排查方法,还有什么地方要排查的,实在不知道怎么搞了

rabbitmq 貌似一段时间后 会断开跟MobileIMSDK主服务器的连接_ttttt.png
签名: 试试看签到6个字
im主服务器其他部分都是正常的,包括用户离在线什么的 都正常,就是rabbitmq这块 没连上状态了
签名: 试试看签到6个字
那段代码是我蛮加上去的也没什么用。
我是看rabbitmq上面 ready状态的还有56个,但是提示一个消费者都没有了。重启后消费者为1
还有什么办法可以跟踪的吗
签名: 试试看签到6个字
好的。先谢谢了
签名: 试试看签到6个字
问题解决了,分享一下:

boolean autoAck = false;
resumeChannel.basicQos(1);//加这句就行了
resumeChannel.basicConsume(queueName, autoAck,dc);

不加resumeChannel.basicQos(1);的话 ,一段时间后消费者会收不到消息,要重启,亲测过
签名: 试试看签到6个字
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部