一、环境清单
想系统学习下RocketMQ,所谓万事开头难,环境跑起来再说。
虚拟机:VirtualBox
最好不要用 网络地址转换(NAT)端口转发 模式,RocketMQ在程序访问的时候只需要填写一个NameSrv地址,但是会从NameSrv拿Broker的地址(Broker端口10911,假如本机地址 10.10.1.22,虚拟机地址10.10.1.23,你的端口映射:10.10.1.22:10911 -> 10.10.1.23:10911,很不幸,RocketMQ会拿到10.10.1.23:10911去尝试连接Broker,这必然是连接不上的,而且MQ报错信息也很简单粗暴,后面也会经常遇到:No route info of this topic XXX)
操作系统:Ubuntu 18.04
JDK:1.8
之前采用的JDK12,坑比较多,JDK12对JVM部分做了调整,RocketMQ提供的配置是基于JDK1.8的,改了半天也没有弄好
RocketMQ:4.4.0
搭建很简单,装好JDK,配置好环境变量,然后启动NameSrv及Broker
Rocket目录:~/soft/rocketmq-all-4.4.0-bin-release,之后的命令都是在这个目录下执行的
虚拟机IP:10.1.11.115
二、RocketMQ启动/验证/关闭
1、启动Name Server:
nohup sh bin/mqnamesrv -n 10.1.11.155:9876 &
启动成功后日志显示:The Name Server boot success. serializeType=JSON
2、启动Broker:
nohup sh bin/mqbroker -n 10.1.11.155:9876 -c conf/broker.conf autoCreateTopicEnable=true &
启动成功后日志显示:
The broker[broker-a, 10.1.11.155:10911] boot success. serializeType=JSON and name server is 10.1.11.155:9876
注意斜体部分的配置文件:broker.conf 需要新增三行配置:
第一行指定Name Server地址,第二行及第三行执行Broker的地址,为啥有俩,据说有一个是给VIP通道用的,注意这里用的IP都是具体的IP,建议不要使用 localhost 或者 127.0.0.1,不然有可能出现 No route info of this topic XXX
autoCreateTopicEnable 这个属性,允许自动创建topic,我配置了这个,没有毛线用处,没有深究,都是手工创建的Topic,创建及查看Topic的cmd命令如下:
创建:sh bin/mqadmin updateTopic -n namesrv地址 -b broker地址 -t topic名称
示例:sh bin/mqadmin updateTopic -n 10.1.11.115:9876 -b 10.1.11.115:10911 -t asdTopic
查看所有信息,含Topic :sh mqadmin topicList -n
3、验证
NameServer 及 Broker启动完毕后,可以用自带的Tools模拟Producer及Consumer,命令如下:
首先要执行 export NAMESRV_ADDR=10.1.11.155:9876,告诉 Producer 和 Consumer Name Server 的地址
启动Producer,该Producer会产生一批数据推送到MQ
命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
最后启动Consumer接收Producer发送的消息
命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
4、关闭服务
关闭 broker :sh bin/mqshutdown broker
关闭 name server:sh bin/mqshutdown namesrv
这一篇主要是MQ的搭建及基础验证,参考 http://rocketmq.apache.org/docs/quick-start/,下一篇主要是通过JAVA模拟Producer及Consumer。