目录:
1.坑一(sendDefaultImpl call timeout)
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException:sendDefaultImpl call timeout
本地springboot发送消息有如上报错
原因: 阿里云存在多网卡,rocketMQ都会根据当前网卡选择ip使用,当你的机器有多块网卡时,很有可能会有问题。比如,我的机器有两个ip,一个公网ip,一个私网ip,因此需要配置broker.conf 指定当前的公网ip,然后重新启动broker
新增配置路径: /usr/local/rocketmq4.4/distribution/target/apache-rocketmq/conf/broker.conf(这个是我在服务器上的路径)
新增配置内容: brokerIP1=xxx.xxx.xxx.xxx(这里配置为你rocketMQ的公网ip)
启动命令: nohup sh bin/mqbroker -n localhost:9876 -c ./conf/broker.conf &
2.坑二(No route info of this topic, TopicTest1)
MQClientException: No route info of this topic, TopicTest1
本地springboot发送消息有如上报错
原因: Broker禁止自动创建topic,且用户没有通过手工的方式创建 发送指定topic,或者broker和nameserver网络不通
解决: 到控制台手工创建相应topic
3.坑三(connect to ip:端口 filed)
进入控制台发现右上角有个这样的提示:
org.apache.rocketmq.remoting.exception.connect to <x.x.x.x:xxx> failed
原因: 于是就想到可能是配置公网ip后需要开放端口号。
解决: 于是去安全组中配置规则加入10909这个端口号,再刷新页面就正常了,cluster也正常显示了。
4.坑四(close the connection to remote )
#设置名称服务器地址
export NAMESRV_ADDR=localhost:9876
#投递消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
发现在服务器中执行之前通的消息投递出现异常了,异常如下:
17:30:44.722 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
此时我发现之前更改的broker启动时会有一个成功提示类似如下:
原因: 我猜测其中原因就是原本为内网调用,配置了公网ip后是走的公网,所以将端口号开放才可以测通。
解决: 于是我就在安全组规则中添加这个10911端口,将其开放,然后就可以测通了。