记在使用rocketmq client客户端过程中踩到的坑
前言
最近项目中使用阿里的RocketMQ来做消息队列,具体怎么使用RocketMQ不在本文讨论范围之内,其相关帮助文档可以参考如下链接
本文主要记录在使用rocketmq client时,遇到的一些坑,作者采用的客户端版本是4.5.0
踩到的坑
No route info of this topic
遇到这种情况的原因可能有
1、Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic
解决方案
在启动broker时加上autoCreateTopicEnable=true
,如果是用broker.conf
启动,或者集群使用broker-*
启动,形如:
nohup sh /oa/other/rocketmq/bin/mqbroker -c /oa/other/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
broker-a.properties
配置文件中加入
autoCreateTopicEnable=true
2、Broker没有正确连接到Name Server
解决方案
查看broker.log
日志信息
3、Producer没有正确连接到Name Server
解决方案
切换到rocketmq的bin目录,执行
sh mqadmin clusterList -n 安装rocketmqip地址:9876
如果出现
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster broker-a 0 ip:10911 V4_5_0_SNAPSHOT 0.00(0,0ms) 0.00(0,0ms) 0 4 29243.32 0.2995
说明正常连接
4、防火墙原因
解决方案
关闭防火墙(生产环境不建议),开放rocketmq的相应端口,或者加入相应的可以访问rocketmq的ip
5、topic的长度过长
这个有待验证
connect to failed
产生原因:
rocketmq默认开启了vip通道
解决方案:
在客户端代码层面加入
producer.setVipChannelEnabled(false);
consumer.setVipChannelEnabled(false);
Send [3] times, still failed, cost [575]ms, Topic: Name, BrokersSent: [broker-a, broker-a, null]
2021-01-06 12:11:49.531 [ok-cloud-payment-channel][ ERROR] [3550] [nio-8850-exec-5] [5dc31eff8580fe06] [3edd0a589ccc2355] [true] --- [ok.cloud.payment.channel.helper.MQHelper] [sendPaymentCallbackMQ] [106] : MQ send exception Send [3] times, still failed, cost [11]ms, Topic: Topic_Channel_Callback, BrokersSent: [TEST-V101, TEST-V102, TEST-V103]
See http://rocketmq.apache.org/docs/faq/ for further details.
1、如果出现开始发送消息成功,消费者接收消息后,再发送消息的话,出现上诉异常,则有很大概率是机器磁盘空间不足
解决方案:
(1)df -lh
查看磁盘空间大小
(2)top
查看%MEM%
占用前五的进程
(3)按需删除没用的磁盘空间
2、检查网络是否畅通
消息队列网络方面的排查,请参考:http://help.aliyun.com/knowledge_detail/6671409.html
3、如果是使用虚拟机,可能虚拟机中的网络太多,rocketMQ在自动识别网络的时候识别错误
解决方案:
可以把其他网络down掉,或者把想用的那个网让它排在前面
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/26/note-pitfalls-encountered-during-the-use-of-rocketmq-client-client/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论