RocketMQ:快速入門

RocketMQ是阿里巴巴2016年MQ中間件,使用Java語言開發。在阿里內部,RocketMQ承接了例如“雙11”等高併發場景的消息流轉,能夠處理萬億級別的消息。今天我們將安裝RocketMQ,並簡單的使用入門案例體會一下RocketMQ。

1. 準備工作

1.1 下載RocketMQ

毋庸置疑的,首先我們要下載RocketMQ,RocketMQ當前最新版本:4.7.0,本次我們使用的是4.4.0這個版本。

官網地址:http://rocketmq.apache.org/

1.2 環境要求

  • Linux64位系統
  • JDK1.8+(64位)

2. 安裝RocketMQ

2.1 安裝步驟

以二進制包安裝RocketMQ的方式很簡單,只需要將下載好的二進制包解壓到系統的某個文件夾下即可。

在這裏插入圖片描述

3. 啓動RocketMQ

啓動之前,我們需要修改一下JVM的參數。因爲默認情況下,RocketMQ使用的是生產環境的配置,JVM的內存相關配置會非常的大,通常會因爲內存不足導致Broker啓動失敗。

  • 修改runbroker.sh
vim runbroker.sh

# 修改前
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
# 修改後
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m"
  • 修改runserver.sh
vim runserver.sh

# 修改前
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# 修改後
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

現在可以正式啓動RocketMQ了。

3.1 啓動NameServer

# 1.啓動nameserver(默認端口:9876)
nohup sh bin/mqnamesrv &
# 2.查看啓動日誌
tail -f ~/logs/rocketmqlogs/namesrv.log

在這裏插入圖片描述

3.2 啓動Broker

# 1.啓動broker(通過-n指定nameserver的ip:port)
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看啓動日誌
tail -f ~/logs/rocketmqlogs/broker.log

在這裏插入圖片描述

4. 測試RocketMQ

測試程序我們將直接使用官方自帶的消息生產者和消息消費者程序。

4.1 發送消息

# 1.設置環境變量
export NAMESRV_ADDR=localhost:9876
# 2.使用安裝包的Demo發送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

4.2 接收消息

# 1.設置環境變量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

5. 關閉RocketMQ

# 1.關閉Broker
sh bin/mqshutdown broker
# 2.關閉NameServer
sh bin/mqshutdown namesrv

6. 基本概念

通過上面的安裝以及簡單案例的快速入門之後,我們再來說一說RocketMQ中的基本概念。

6.1 消息模型(Message Model)

RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產消息,Consumer 負責消費消息,Broker 負責存儲消息。Broker 在實際部署過程中對應一臺服務器,每個 Broker 可以存儲多個Topic的消息,每個Topic的消息也可以分片存儲於不同的 Broker。Message Queue 用於存儲消息的物理地址,每個Topic中的消息地址存儲於多個 Message Queue 中。ConsumerGroup 由多個Consumer 實例構成。

6.2 消息生產者(Producer)

負責生產消息,一般由業務系統負責生產消息。一個消息生產者會把業務應用系統裏產生的消息發送到broker服務器。RocketMQ提供多種發送方式,同步發送、異步發送、順序發送、單向發送。同步和異步方式均需要Broker返回確認信息,單向發送不需要。

6.3 消息消費者(Consumer)

負責消費消息,一般是後臺系統負責異步消費。一個消息消費者會從Broker服務器拉取消息、並將其提供給應用程序。從用戶應用的角度而言提供了兩種消費形式:拉取式消費、推動式消費。

6.4 主題(Topic)

表示一類消息的集合,每個主題包含若干條消息,每條消息只能屬於一個主題,是RocketMQ進行消息訂閱的基本單位。

6.5 Broker Server

消息中轉角色,負責存儲消息、轉發消息。Broker Server在RocketMQ系統中負責接收從生產者發送來的消息並存儲、同時爲消費者的拉取請求作準備。Broker Server也存儲消息相關的元數據,包括消費者組、消費進度偏移和主題和隊列消息等。

6.6 Name Server

路由消息的提供者。生產者或消費者能夠通過Name Server查找各主題相應的Broker IP列表。多個Namesrv實例組成集羣,但相互獨立,沒有信息交換。

——End——
更多精彩分享,可掃碼關注微信公衆號哦。

在這裏插入圖片描述

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