在雲服務器上安裝RocketMq後,項目整合測試
啓動好nameServer和Broker之後, 啓動生產者會報這樣的錯誤
Exception in thread "main" org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:588)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)
at com.baojian.mob.base.producer.SyncProducer.main(SyncProducer.java:41)
15:22:31.455 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
15:22:32.049 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
原因: BrokerIP展示的是雲服務器的本地IP,不是公網IP;
解決方法:
在conf/broker.conf 中 加入 兩行配置
namesrvAddr = 你的公網IP:9876
brokerIP1=你的公網IP
重新啓動 broker
啓動broker的指令要修改下, 要將這個配置文件指定加載
nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf autoCreateTopicEnable=true &