簡介
Apache RocketMQ
作爲阿里開源的一款高性能、高吞吐量的分佈式消息中間件
特點
- 在高壓下1毫秒內響應未延遲超過99.6%。
- 適合金融類業務,高可用性跟蹤和審計功能。
- 支持發佈訂閱模型,和點對點
- 支持拉
pull
和推push
兩種消息模式 - 單一隊列百萬消息
- 支持單master節點,多master節點,多master多slave節點
概念
-
Producer
:消息生產者 -
Producer Group
:消息生產者組,發送同類消息的一個消息生產組 -
Consumer
:消費者 -
Consumer Group
:消費同個消息的多個實例 -
Tag
:標籤,子主題(二級分類),用於區分同一個主題下的不同業務的消息 -
Topic
:主題(發佈點閱) -
Message
:消息 -
Broker
:MQ程序,接收生產的消息,提供給消費者消費的程序Name Server
:給生產者和消費者提供路由信息,提供輕量級的服務發現和路由
學習資料
安裝和部署
前提環境
64bit OS, Linux/Unix/Mac
64bit JDK 1.8+
Getting Started
下載安裝包
此二進制安裝包可直接解壓運行
創建安裝目錄(/export/servers
是我存放服務端應用的目錄):
[root@izbp18kejuoa2rnvbzgg6tz ~]# cd /export/servers
[root@izbp18kejuoa2rnvbzgg6tz servers]# mkdir rocketmq
下載安裝包到此目錄並解壓:
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# unzip rocketmq-all-4.2.0-bin-release.zip
如果找不到
unzip
命令,則使用yum install unzip
啓動
進入 bin
目錄啓動 NameServer
(後臺啓動):
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd bin
[[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup sh mqnamesrv &
[3] 24383
[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup: ignoring input and appending output to ‘nohup.out’
查看啓動日誌:
[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup: ignoring input and appending output to ‘nohup.out’
tail -f nohup.out
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k). A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k). A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k). A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
最後一行顯示 The Name Server boot success
則表示啓動成功,按 ctrl C
退出會話
如果報錯如下:
VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild; error=’Cannot allocate memory’ (errno=12)
這是因爲服務器內存不夠,無法分配。你需要修改啓動腳本 bin/runserver.sh
,bin/runbroker.sh
中的一行內容:
runserver.sh:JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
這些 JVM
運行參數可根據應用場景自行設置。
啓動成功後,通過 jps
命令(java提供的命令)可查看正在運行的java應用程序:
[root@izbp18kejuoa2rnvbzgg6tz bin]# jps
21636 NamesrvStartup
21723 Jps
接着啓動 broker
[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup sh mqbroker -n 172.0.0.1:9876 &
按 ctrl c
退出會話
查看進程:
[root@izbp18kejuoa2rnvbzgg6tz bin]# jps
21921 BrokerStartup
21970 Jps
21636 NamesrvStartup
關閉
你可以使用 bin/mqshutdown broker
,bin/mqshutdown namesrv
來關閉
可視化控制檯
不像 activemq
,啓動後自帶web控制檯,rocketmq
需自己下載可視化web控制檯插件來查看運行狀況。
插件下載地址,我將它下載到 rocketmq
目錄下並解壓
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# wget https://github.com/apache/rocketmq-externals/archive/master.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# unzip rocketmq-externals-master.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# rm -rf rocketmq-externals-master.zip
將此項目中的 rocketmq-console
文件夾(SpringBoot開發的web應用,即我們所需的rocketmq控制檯)移出來:
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd rocketmq-externals-master
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-externals-master]# mv rocketmq-console ..
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-externals-master]# cd ..
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# ls
benchmark bin conf lib LICENSE NOTICE README.md rocketmq-console
啓動該項目前需編譯打包該項目:
編譯該項目前需安裝
maven
,並且可能需要聯網下載依賴(你也可以在宿主機上打包好後上傳到虛擬機上)
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd rocketmq-console
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-console]mvn clean package -Dmaven.test.skip=true
啓動該項目:
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-console]# java -jar target/rocketmq-console-ng-1.0.0.jar
接着訪問 192.168.25.136:8080
(192.168.25.136
是這臺虛擬機的內網IP)即可看到對應本機rocketmq服務的可視化控制檯:
更多學習資料上白玉搜一搜搜索下載