1. 程式人生 > 實用技巧 >RocketMq-01-整體部署與快速實戰

RocketMq-01-整體部署與快速實戰

一、簡介 Apache RocketMQ是一個分散式訊息傳遞和流媒體平臺,具有低延遲,高效能和可靠性,萬億級容量和靈活的可伸縮性。 它由四個部分組成:nameserver,broker,生產者和使用者。 它們中的每一個都可以水平擴充套件,而沒有單個故障點。 如上面的螢幕截圖所示。nameserver:提供輕量級的服務發現和路由。 每個名稱伺服器記錄完整的路由資訊,提供相應的讀寫服務,並支援快速的儲存擴充套件。Broker:通過提供輕量級的TOPIC和QUEUE機制來儲存訊息。 二、叢集部署與配置 參考連結(官網Quick Start): http://rocketmq.apache.org/docs/quick-start/
環境 JDK版本:1.8.0_221 rocketmq版本: roq­all­4.3.2­incubating­bin­release.zip 執行環境 JDK版本:1.8.0_221 rocketmq版本:rocketmq­all­4.3.2­ 系統:centos 7 1.配置環境變數 vim /etc/profile 插入JDK和RocketMq環境變數 export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH #rocketmq export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq‐all‐4.1.0‐incubating export PATH=$ROCKETMQ_HOME/bin:$PATH 重新整理環境變數: source /etc/profile 2.修改broker配置
配置檔案地址:/usr/local/rocketmq/conf/broker.conf #叢集名稱,可自定義 brokerClusterName=DefaultCluster brokerName=broker‐a brokerId=0 brokerIP1=192.168.241.198 //定義服務地址,主存地址 namesrvAddr=192.168.241.198:9876 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH autoCreateTopicEnable=true #訊息儲存根路徑 storePathRootDir=/data/rocketmq/store #日誌路徑 storePathCommitLog=/data/rocketmq/store/commitlog 3.啟動指令碼配置修改(可選)
機器記憶體不夠(一般針對虛擬機器),修改/usr/local/rocketmq/bin/runserver.sh與 /usr/local/rocketmq/bin/runbroker.sh中JAVA_OPT關於記憶體的設定 #修改此處的記憶體大小,預設為4g,一般我們的虛擬機器記憶體不會太大 #所以此處修改為256m,可以根據自己機器的配置合理設定 JAVA_OPT="${JAVA_OPT}‐server‐Xms256m‐Xmx256m‐Xmn128m‐XX:MetaspaceSi ze=64m‐XX:MaxMetaspaceSize=128m" 4.啟動namesrv nohupshbin/mqnamesrv‐n192.168.241.198:9876& 5.啟動broker nohupshbin/mqbroker‐n192.168.241.198:9876autoCreateTopicEnable=true & 指定配置檔案啟動 nohupshbin/mqbroker‐n192.168.241.198:9876‐cconf/broker.confautoCre ateTopicEnable=true& 6.rocketmq多機叢集部署 準備2個虛擬機器分別是虛擬機器centos-node-01與centos-node-02,分別部署2個NameServer,並在每臺機器上分別啟動一個Master和一個Slave,互為主備,在主目錄下的conf資料夾下提供了多種broker配置模式,分別有:2m-2s-async,2m-2s-sync,2m-noslave,可以以此為模版做如下配置: 以 2m-2s-sync同步為例 1. 配置192.168.241.198 Master和Slave Master broker-m.conf配置如下: namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 brokerClusterName=DefaultCluster brokerName=broker-a brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=SYNC_MASTER flushDiskType=ASYNC_FLUSH autoCreateTopicEnable=true listenPort=10811 storePathRootDir=/root/rocketmq/store‐m Slave broker-s.conf配置如下 namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址不配置預設localhost:9876 brokerClusterName=DefaultCluster //叢集名稱 brokerName=broker-a //broker名稱 brokerId=1 // 0是master,非0是slave deleteWhen=04 //凌晨4點刪除訊息 fileReservedTime=48 //訊息儲存48小時 brokerRole=SLAVE //broker角色 flushDiskType=ASYNC_FLUSH //訊息持久化方式同步刷盤/非同步刷盤 autoCreateTopicEnable=true //傳送訊息時如果Topic不存在,則自動建立 listenPort=10911 //broker通訊埠 storePathRootDir=/root/rocketmq/store‐s //訊息持久化根目錄 2. 配置192.168.241.199 Master和Slave Master broker-m.conf配置如下: namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 brokerClusterName=DefaultCluster brokerName=broker-b brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=SYNC_MASTER flushDiskType=ASYNC_FLUSH autoCreateTopicEnable=true listenPort=10811 storePathRootDir=/root/rocketmq/store‐m Slave broker-s.conf配置如下 namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址不配置預設localhost:9876 brokerClusterName=DefaultCluster //叢集名稱 brokerName=broker-b //broker名稱 brokerId=1 // 0是master,非0是slave deleteWhen=04 //凌晨4點刪除訊息 fileReservedTime=48 //訊息儲存48小時 brokerRole=SLAVE //broker角色 flushDiskType=ASYNC_FLUSH //訊息持久化方式同步刷盤/非同步刷盤 autoCreateTopicEnable=true //傳送訊息時如果Topic不存在,則自動建立 listenPort=10911 //broker通訊埠 storePathRootDir=/root/rocketmq/store‐s //訊息持久化根目錄 啟動mqnamesrv nohup sh mqnamesrv & 啟動master nohup sh bin/mqbroker ‐c conf/broker‐m.conf & 啟動slave nohup sh bin/mqbroker ‐c conf/broker‐s.conf & 叢集啟動後檢視叢集監控狀態 sh mqadmin clusterlist ‐n 192.168.241.198:9876 測試 測試傳送端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 測試消費端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer 7.控制檯搭建 1.github下載地址: https://github.com/apache/rocketmq-externals 選擇分支:release-rocketmq-console-1.0.0 2.編輯application.properties配置檔案,修改啟動埠和對應的rocketMQ的namesrv地址 3.進入專案目錄下打包:maven clean package -Dmaven.test.skip=true 4.上傳jar包到對應伺服器上並啟動 :java -jarrocketmq-console-1.0.0.jar