sendDefaultImpl call timeout

某天开发同事报说rocketmq链接不了,报如下错误:apache

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

本着凡事都要亲自验证的原则,我登录rocketmq服务器作了测试:
bash

[root@test-server rocketmq]# export NAMESRV_ADDR=localhost:9876
[root@test-server rocketmq]# sh  bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
16:38:41.675 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
SendResult [sendStatus=SEND_OK, msgId=AC110001DBD94D7E1886279EDA940000, offsetMsgId=0A01066600002A9F0000000000D57A02, messageQueue=MessageQueue [topic=TopicTest, brokerName=nacos_test, queueId=3], queueOffset=2232]
SendResult [sendStatus=SEND_OK, msgId=AC110001DBD94D7E1886279EDAB50001, offsetMsgId=0A01066600002A9F0000000000D57ACB, messageQueue=MessageQueue [topic=TopicTest, brokerName=nacos_test, queueId=0], queueOffset=2231]
SendResult [sendStatus=SEND_OK, msgId=AC110001DBD94D7E1886279EDABA0002, offsetMsgId=0A01066600002A9F0000000000D57B94, messageQueue=MessageQueue [topic=TopicTest, brokerName=nacos_test, queueId=1], queueOffset=2231]
SendResult [sendStatus=SEND_OK, msgId=AC110001DBD94D7E1886279EDAC50003, offsetMsgId=0A01066600002A9F0000000000D57C5D, messageQueue=MessageQueue [topic=TopicTest, brokerName=nacos_test, queueId=2], queueOffset=2233]
SendResult [sendStatus=SEND_OK, msgId=AC110001DBD94D7E1886279EDAC90004, offsetMsgId=0A01066600002A9F0000000000D57D26, messageQueue=MessageQueue [topic=TopicTest, brokerName=nacos_test, queueId=3], queueOffset=2233]
[root@test-server rocketmq]# sh  bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
9EDD1600A6, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 54, 54], transactionId='null'}]] 
ConsumeMessageThread_3 Receive New Messages: [MessageExt [brokerName=nacos_test, queueId=1, storeSize=203, queueOffset=2266, sysFlag=0, bornTimestamp=1620463122633, bornHost=/10.1.6.105:43826, storeTimestamp=1620463122631, storeHost=/10.1.6.102:10911, msgId=0A01066600002A9F0000000000D5EA2E, commitLogOffset=14019118, bodyCRC=174475622, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2281, CONSUME_START_TIME=1620463196672, UNIQ_KEY=AC110001DBD94D7E1886279EDCC9008E, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 52, 50], transactionId='null'}]]

发现生产者和消费者均可以正常工做,因而跟开发说我这边测试没问题,开发又把日志发过来,确实不行。因而我怀疑是否是就本机能够,别的机器访问他不行,我就在另一台机器上作了测试,果真不行,报的错跟开发提供的同样。因为此前也没用过这玩意儿,不是很熟,遂百度和谷歌一通,总的来讲有如下几个方法:
服务器

一、在broker.conf文件添加MQ的IP地址app

[root@test-server rocketmq]# cat conf/broker.conf 
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=10.1.6.105:9876
brokerIP1=10.1.6.105

试过,没效果
ide

二、broker启动时候指定broker.conf配置文件,我原来没有指定,可是我另一台也没有指定就能够,不懂测试

[root@test-server rocketmq]# nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true -c conf/broker.conf &

注意,我原来写成
ui

[root@test-server rocketmq]# nohup sh bin/mqbroker -n 10.1.6.105:9876 autoCreateTopicEnable=true -c conf/broker.conf &

这样是不行的spa

三、修改lib/rocketmq-client-4.7.1.jar这个jar包里面的org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.class这个class文件里面的默认超时参数,我找了很久没找到那个默认3000的超时时间.net

总结:折腾了一早上加差很少一下午才发现,原来是须要把方法2里面的broker启动参数的IP地址写成localhost:9876,我原来想当来的写成网卡IP日志

相关文章
相关标签/搜索