SpringBoot2.x(十四)RocketMQ介紹和整合

簡介

Apache RocketMQ作爲阿里開源的一款高性能、高吞吐量的分佈式消息中間件

特點

  • 在高壓下1毫秒內響應未延遲超過99.6%。
  • 適合金融類業務,高可用性跟蹤和審計功能。
  • 支持發佈訂閱模型,和點對點
  • 支持拉pull和推push兩種消息模式
  • 單一隊列百萬消息
  • 支持單master節點,多master節點,多master多slave節點

概念

  • Producer:消息生產者

  • Producer Group:消息生產者組,發送同類消息的一個消息生產組

  • Consumer:消費者

  • Consumer Group:消費同個消息的多個實例

  • Tag:標籤,子主題(二級分類),用於區分同一個主題下的不同業務的消息

  • Topic:主題(發佈點閱)

  • Message:消息

  • BrokerMQ程序,接收生產的消息,提供給消費者消費的程序
    Name Server:給生產者和消費者提供路由信息,提供輕量級的服務發現和路由

學習資料

官網

阿里中間件團隊博客

分佈式開放消息系統(RocketMQ)的原理與實踐

安裝和部署

前提環境

  • 64bit OS, Linux/Unix/Mac
  • 64bit JDK 1.8+

Getting Started

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:8080192.168.25.136是這臺虛擬機的內網IP)即可看到對應本機rocketmq服務的可視化控制檯:

 

更多學習資料上白玉搜一搜搜索下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章