为什么在开发环境MQ(4.2版本)可以正常发送和接收消息,到线上环境就不可用了报:Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <x.x.x.x:10911> failed
由于线上环境有多个网卡,默认情况下MQ很可能走的是内网的IP(因内网网卡排在外网网卡前面)所以要做如下修改:
在/usr/local/rocketmq/rocketmq-rocketmq-all-4.2.0/distribution/target/apache-rocketmq/conf下的broker.conf中添加
namesrvAddr=服务器外网IP:9876
brokerIP1=服务器外网IP
并且重启namesrv和broker
启动namesrv命令:nohup sh mqnamesrv >/usr/local/rocketmq/rocketmq-rocketmq-all-4.2.0/logs/mqnamesrv.log 2>&1 &
启动broker命令:nohup sh bin/mqbroker -c conf/broker.conf &(必须使用此命令,否则配置的IP可能不会生效)
下面是代码上的改动:
在创建消息发送实例和开启消费者监听服务时分别加红框中的设置(关闭VIP通道)
特别提醒:阿里云的安全组中要增加10911和9876的端口