最近想深入學習一下消息隊列, 本來想看kafka的源碼, 但由于kafka是scala寫的,本人又不懂kafaka,最終選擇了阿里的RocketMQ. RocketMQ是基于kafka的原理構建的, 又根據阿里自身的需求進行了修改. 下文根據RocketMQ官方文檔, 搭建RocketMQ的開發環境.
先決條件
首先需要下列軟件:
1.64bit OS, Linux/Unix/Mac is recommended;
2.64bit JDK 1.7+;
3.Maven 3.2.x
4.Git
Clone & Build
> git clone https://github.com/apache/incubator-rocketmq.git
> cd incubator-rocketmq
> mvn clean package install -Prelease-all assembly:assembly -U
> cd target/apache-rocketmq-all/
target/apache-rocketmq-all目錄下的文件就是RocketMQ的所有安裝文件. 將apache-rocketmq-all拷貝到/usr/install(本人安裝軟件的目錄)目錄下就完成了安裝.
下面是官網提供的quick start.
Start Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
Start Broker
> nohup sh bin/mqbroker -n localhost:9876 &
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...
由于broker不會使用loopback的地址,因此必須確保loopback連入了某個網絡(我們認為是局域網就行).
發送&&接收消息
為了收發消息客戶端必須知道name servers的地址, RocketMQ提供了多種方式獲取name servers的地址, 下面是使用環境變量的方式:
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
Shutdown Servers
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
搭建IDEA集成開發環境
用IDEA引入incubator-rocketmq項目, 即可完成集成開發環境的搭建, 非常方便.
IDEA集成開發環境
參考文檔:
https://rocketmq.incubator.apache.org/docs/quick-start/