默认
发表评论 1
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 请教下RainbowChatMQServer2有时候会提示连接不上
问题描述:
    web用户发送消息给另外一个web用户时消息能正常接收,但是刷新页面后消息不见了,猜测是没有保存到数据库,但是过了一段时间又恢复正常,检查了RainbowChatMQServer2会有以下日志(其中有很多条【5秒后重新尝试start】, 这里只是提供最后一条以及启动成功的),麻烦大佬帮忙看下如何排查?

补充: rabbitmq服务是有启动的
WARN  - [12:34:36.413]An unexpected connection driver error occurred (Exception message: Socket closed) | (ForgivingExceptionHandler^log:115)
ERROR - [12:34:36.413][IM(MQ->DB)] - 【NO】getConnection()时出错了,原因是:null | (MQProvider^tryGetConnection:255)
java.util.concurrent.TimeoutException: null
        at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:120) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:502) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:326) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:65) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:160) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1216) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1173) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1131) ~[amqp-client-5.14.2.jar:5.14.2]
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1294) ~[amqp-client-5.14.2.jar:5.14.2]
        at net.x52im.mobileimsdk.server.bridge.MQProvider.tryGetConnection(MQProvider.java:223) [MobileIMSDK_MQ.jar:?]
        at net.x52im.mobileimsdk.server.bridge.MQProvider.start(MQProvider.java:276) [MobileIMSDK_MQ.jar:?]
        at net.x52im.mobileimsdk.server.bridge.MQProvider$3.run(MQProvider.java:296) [MobileIMSDK_MQ.jar:?]
        at java.util.TimerThread.mainLoop(Timer.java:555) [?:1.8.0_172]
        at java.util.TimerThread.run(Timer.java:505) [?:1.8.0_172]
ERROR - [12:34:36.414][IM(MQ->DB)-↑] - [start()中]【严重】connction还没有准备好,conn.createChannel()失败,start()没有继续!(原因:connction==null)【5秒后重新尝试start】 | (MQProvider^start:283)
DEBUG - [12:40:44.016][BaseConf] RainbowChatMQ服务器的核心配置文件路径:/var/www/RainbowChatMQServer2_deploy/classes/com/x52im/rainbowchat/mq/base_conf.properties | (BaseConf^<init>:27)
INFO  - [12:40:46.133][IM(MQ->DB)-↓] - [消费者startWorker()中] Worker(消费者)已经成功开启并运行中...【OK】 | (MQProvider^startWorker:506)
INFO  - [12:40:46.133][MQ]MQ服务器正在运行中... | (MQServerLaucher^main:25)
INFO  - [12:40:46.137][IM(MQ->DB)-↓] - [消费者startWorker()中的handleDelivery] 收到一条新消息(routingKey=q_im2db_msg,contentType=null,consumerTag=amq.ctag-oLY87G2YuptZ0QiKB8gljQ,deliveryTag=1),马上开始处理。。。。 | (MQProvider$4^handleDelivery:484)

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

上一篇:移动端IM产品RainbowChat[专业版] iOS端 v10.0版已发布!下一篇:移动端IM产品RainbowChat iOS端 v10.2发布,全面适配iOS 26!
推荐方案
评论 1
这个Log显示的是RainbowChatMQServer2这个服务(网络超时了),连接不上你的RabbitMQ服务器你应该这样去排查:

1)用ping工具(可以下载这个,对你的RabbitMQ服务器进行长测,持续观察你RainbowChatMQServer2这个服务所在服务器跟你RabbitMQ服务器之间的网络到底是不是正常;

2)如果第1步没有发现明显的网络波动和异常,那就要去想办法诊断RabbitMQ服务本身到底是不是稳定的,比如它会不会异步关闭了或者怎么的(MQ中件间这件东西,跟数据库一样,是标准的基础软件,它的稳定性很重要),看看你用的RabbitMQ这个版本,是不是稳定版本,或者跟你的服务器硬件是不是有什么不兼容的。

以上就是我给你的建议。

RainbowChatMQServer2本身很稳定可靠,因为它的代码非常少,作用就是个再简单不过的MQ消费者而已。所以建议你优先按上面的建议排查,如果上面的排查都无异常,那就只能再回头来分析别的原因了



打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部