一、linux平台下搭建
1 准备条件:64bit JDK 1.7+;且配置好JAVA_HOME环境变量
2 去apache官网Downloading the Apache RocketMQ Releases下载rocketmq-all-4.0.0-incubating-bin-release.zip,注意:最好要Binary版,不然后续启动会报ClassNotFound错误。如果官网已经没有4.0.0版本或者无法连接到官网,也可以到我的资源RocketMQ4.0.0安装包下载。
3 解压文件:unzip rocketmq-all-4.0.0-incubating-bin-release.zip
4 进入解压后的目录apache-rocketmq-all
5 启动 Name Server:
nohup sh bin/mqnamesrv &
6 启动Broker:
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &
!!!(记得加 autoCreateTopicEnable=true ,否则会报No route info of this topic错误)
测试:
启动 Producer:
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
启动 Consumer:
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
二、windows平台下搭建
很悲伤,RocketMQ4.0.0版本暂无windows版,但是我们还是可以在windows平台下使用和练习。
1 在rocketmq的github地址 将源代码导入到本地。
如果该地址版本已更新,可以到我的github地址下载,以确保是4.0.0版本。
2 添加环境变量ROCKETMQ_HOME ,设置值为:127.0.0.1:9876
3 启动Name Server:
(a) 进入org.apache.rocketmq.namesrv包内的NamesrvStartup类,修改109行的
configurator.doConfigure(namesrvConfig.getRocketmqHome() + "/conf/logback_namesrv.xml");
将namesrvConfig.getRocketmqHome()改为你工程存放的目录,例如我的设置是
configurator.doConfigure("E:/IdeaWorkplace/incubator-rocketmq" + "/conf/logback_namesrv.xml");
(b) run NamesrvStartup类的main方法
4 启动Broker:
(a) 进入org.apache.rocketmq.broker包内的BrokerStartup类,修改183行的
configurator.doConfigure(brokerConfig.getRocketmqHome() + "/conf/logback_broker.xml");
将brokerConfig.getRocketmqHome()改为你工程存放的目录,例如我的设置是
configurator.doConfigure("E:/IdeaWorkplace/incubator-rocketmq" + "/conf/logback_namesrv.xml");
(b) run BrokerStartup的main方法
5 测试
进入example模块下的org.apache.rocketmq.example.quickstart包,先run Producer的main方法,再run Consumer的main方法。看到如下输出,表示配置成功。
SendResult [sendStatus=SEND_OK, msgId=0A762C5D210447415DBF06CF99C203E0, offsetMsgId=0A762C5D00002A9F0000000000060E64, messageQueue=MessageQueue [topic=TopicTest, brokerName=SF0001139954B, queueId=1], queueOffset=498]
SendResult [sendStatus=SEND_OK, msgId=0A762C5D210447415DBF06CF99C503E1, offsetMsgId=0A762C5D00002A9F0000000000060F18, messageQueue=MessageQueue [topic=TopicTest, brokerName=SF0001139954B, queueId=2], queueOffset=498]
SendResult [sendStatus=SEND_OK, msgId=0A762C5D210447415DBF06CF99C703E2, offsetMsgId=0A762C5D00002A9F0000000000060FCC, messageQueue=MessageQueue [topic=TopicTest, brokerName=SF0001139954B, queueId=3], queueOffset=498]
ConsumeMessageThread_9 Receive New Messages: [MessageExt [queueId=3, storeSize=180, queueOffset=484, sysFlag=0, bornTimestamp=1488455068491, bornHost=/10.118.44.93:59296, storeTimestamp=1488455068492, storeHost=/10.118.44.93:10911, msgId=0A762C5D00002A9F000000000005E86C, commitLogOffset=387180, bodyCRC=736192263, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message [topic=TopicTest, flag=0, properties={TAGS=TagA, WAIT=true, UNIQ_KEY=0A762C5D210447415DBF06CF994B03AA, MAX_OFFSET=500, CONSUME_START_TIME=1488455116459, MIN_OFFSET=0}, body=18]]]
ConsumeMessageThread_18 Receive New Messages: [MessageExt [queueId=3, storeSize=180, queueOffset=483, sysFlag=0, bornTimestamp=1488455068483, bornHost=/10.118.44.93:59296, storeTimestamp=1488455068484, storeHost=/10.118.44.93:10911, msgId=0A762C5D00002A9F000000000005E59C, commitLogOffset=386460, bodyCRC=576138028, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message [topic=TopicTest, flag=0, properties={TAGS=TagA, WAIT=true, UNIQ_KEY=0A762C5D210447415DBF06CF994303A6, MAX_OFFSET=500, CONSUME_START_TIME=1488455116459, MIN_OFFSET=0}, body=18]]]