rocketMq排坑:如何设置rocketMq broker的ip地址

原创
2017/05/11 13:49
阅读数 1.9W

先上结论

需要在启动的时候导入配置文件

#进入rocketmq根目录
cd incubator-rocketmq/distribution/target/apache-rocketmq
#编写配置文件,并写好配置
echo "brokerIP1=10.2.x.x" > broker.properties
#启动 mqnamesrv 
nohup sh bin/mqnamesrv &

#重点:mrbroker 启动时通过 -c 加载配置文件
nohup sh bin/mqbroker -n ${namesrvIp}:9876 -c /opt/rocketmq/incubator-rocketmq/distribution/target/apache-rocketmq/broker.properties &



原理:

rpcketMq broker的启动

rocketMq的broker 启动类

org.apache.rocketmq.broker.BrokerStartup

启动的时候会读取代码中的默认配置,关于 broker的配置在

org.apache.rocketmq.common.BrokerConfig

中,根据源代码可以得知,broker使用的默认IP为本机Ip

brokerIP1 = RemotingUtil.getLocalAddress();

得到选取ip的思路是,遍历本地的所有网卡ip,过滤掉 “127.0” 和“192.168”开头的ip地址

然后得到第一个ip,为本机ip。

问题:

当这台机器有很多别的网卡(如:安装docker后),broker使用的ip,就可能会导致我们的客户端无法连接。

解决:

rockerMq,在加载默认配置后,根据,启动时是否包含 -c 参数

if (commandLine.hasOption('c'))

确定是否执行代码加载额外配置文件

加载时,通过反射的方式,根据配置文件中的键值对,赋值到 BrokerConfig中对应的属性中。

最后:

rocketMq启动时会打印出所有“重要的配置” (被@ImportantField所注解的属性),

通过打印的 brokerIP1 的属性,就可以知道,配置是否成功了

 

展开阅读全文
打赏
3
2 收藏
分享

作者的其它热门文章

加载中
更多评论
打赏
0 评论
2 收藏
3
分享
返回顶部
顶部