使用rocketmq client客户端过程中踩到的坑

小编:管理员 14阅读 2022.08.01

前言

最近项目中使用阿里的rocketmq来做消息队列,具体怎么使用rocketmq不在本文讨论范围之内,其相关帮助文档可以参考如下链接

https://help.aliyun.com/product/29530.html?spm=a2c4g.11186623.6.540.afd02578y4vHe4

本文主要记录在使用rocketmq client时,遇到的一些坑,作者采用的客户端版本是4.2

踩到的坑1、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_2_0_SNAPSHOT          0.00(0,0ms)         0.00(0,0ms)          0 429243.32 0.2995
复制

说明正常连接

4、防火墙原因

解决方案

关闭防火墙(生产环境不建议),开放rocketmq的相应端口,或者加入相应的可以访问rocketmq的ip

5、topic的长度过长

这个有待验证

2、connect to <ip:10909> failed

产生的原因

rocketmq默认开启了vip通道

解决方案:

在客户端代码层面加入

producer.setVipChannelEnabled(false);
consumer.setVipChannelEnabled(false);
复制3、Send [3] times, still failed, cost [575]ms, Topic: Name, BrokersSent: [broker-a, broker-a, null]

1、如果出现开始发送消息成功,消费者接收消息后,再发送消息的话,出现上诉异常,则有很大概率是机器磁盘空间不足

解决方案

1、df -lh 查看磁盘空间大小 2、top 查看%MEM%占用前五的进程 3、按需删除没用的磁盘空间

2、检查网络是否畅通

消息队列网络方面的排查,请参考:

http://help.aliyun.com/knowledge_detail/6671409.html?spm=5176.789006189.3.6.UbsCt3

3、如果是使用虚拟机,可能虚拟机中的网络太多,rocketMQ在自动识别网络的时候识别错误。

解决方案

可以把其他网络down掉,或者把想用的那个网让它排在前面

关联标签: