RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability. It is the third generation distributed messaging middleware open sourced by Alibaba in 2012. On November 21, 2016, Alibaba donated RocketMQ to the Apache Software Foundation. Next year, on February 20, the Apache Software Foundation announced Apache RocketMQ as a Top-Level Project.java
-- quote from Wikipediagit
RocketMQ是一個輕量級、高可用、低延時的消息中間件,能實現消息的存儲,消息的失敗重試,批量消息處理,延時消息處理等特性,在各類消息中間件中表現優異。github
RocketMQ一共包含四個部分:Name Server,Brokers,Producers,Consumers 。這幾個部分都能單獨的水平擴展。web
輕量級的組件,主要用於服務的發現,可以讀寫路由信息以及全局的信息,支持高速的存儲;apache
輕量級的Topic與Queue的機制去管理數據的存儲,方便實現容錯須要2到3個數據分片的提供。客戶端能夠向Broker推送或者拉取數據,同時也支持災難恢復和數據統計;vim
Producer可以進行分佈式部署,推送消息到Brokers能進行均衡的分配,還具備高可用,低延時的特性;tomcat
Consumer 也能夠進行分佈式的部署,推送和拉取消息,還能實時的訂閱消息,從集羣中消費消息,還能實現消息的廣播。服務器
服務器配置:app
// 咱們這裏安裝兩臺服務器,都是master,也就是兩臺master: 192.168.2.128 nameServer1,brokerServer1 192.168.2.135 nameServer2,brokerServer2
添加Host文件:webapp
vim /etc/hosts // 添加以下配置 192.168.2.128 rocketmq-nameserver1 192.168.2.128 rocketmq-master1 192.168.2.135 rocketmq-nameserver2 192.168.2.135 rocketmq-master2 // 重啓服務 service network restart
這裏咱們部署的是RocketMQ的3.2.6的版本,最新的版本能夠參閱官網的地址。下載地址以下:
https://archive.apache.org/dist/rocketmq/3.2.6/rocketmq-all-3.2.6-source-release.zip
解壓相關的包:
cd /usr/local wget https://archive.apache.org/dist/rocketmq/3.2.6/rocketmq-all-3.2.6-source-release.zip unzip rocketmq-all-3.2.6-source-release.zip mv rocketmq-all-3.2.6-source-release rocketmq-all-3.2.6 cd rocketmq-all-3.2.6/ // maven打包須要先配置maven環境 這裏也能夠在window的編譯器中打包相關 mvn -Prelease-all -DskipTests clean install -U cd distribution/target/apache-rocketmq // 找到tar.gz tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local mv alibaba-rocketmq alibaba-rocketmq-3.2.6 ln -s alibaba-rocketmq-3.2.6 rocketmq
建立存儲路徑:
mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index
RocketMq配置文件【兩臺機器】
vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
相關配置文件模板以下:
broker-a.properties:
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-a|broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 #在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數 defaultTopicQueueNums=4 #是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每一個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每一個文件默認存30W條,根據業務狀況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/data/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/data/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/data/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
broker-b.properties:
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-a|broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 #在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數 defaultTopicQueueNums=4 #是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每一個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每一個文件默認存30W條,根據業務狀況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/data/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/data/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/data/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
修改日誌配置文件【兩臺機器】
mkdir -p /usr/local/rocketmq/logs cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
修改啓動NameServer【兩臺機器】
vim /usr/local/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m" vim /usr/local/rocketmq/bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
構建步驟以下:
①Start Name Server
cd /usr/local/rocketmq/bin nohup sh bin/mqnamesrv & tail -200f ~/logs/rocketmqlogs/namesrv.log
②Start Broker
// 啓動BrokerServerA: cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties & // 可用jps查看啓動是否成功: jps // 啓動BrokerServerB: cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties &
// 下載源碼地址: https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console // 下載後須要修改config.properties rocketmq.namesrv.addr=192.168.2.128:9876;192.168.2.135:9876 // 使用maven打成war包 // 部署在tomcat以下目錄: /usr/local/apache-tomcat-7.0.65/webapps/ // 啓動tomcat,並訪問: http://IP地址:8080/rocketmq-web-console/cluster/list.do // 既能夠查看相應的集羣情況