RocketMQ系列一:入門級使用演示

bainana發表於2022-07-14

實驗簡介

Apache RocketMQ™ 是一個統一的訊息引擎系統, 也是一個輕量級的資料處理平臺.

當你遇到以下類似問題而束手無策時,RocketMQ 可以幫助你解決:

  • 重試訊息、死信訊息、事物訊息支援

  • 訊息軌跡追蹤

  • 訊息過濾

  • IPv6 支援

  • ACL 支援

  • 主、副本自動高可靠

  • 全面的監控支援

  • 管理平臺原生支援

  • Request-Reply 模式支援

本教程會以如何利用原始碼編譯、打包、部署、實際使用 RocketMQ。

實驗實操

一、如何下載、編譯最新版 RocketMQ

(本教程會以如何利用原始碼編譯並打包 RocketMQ 為例,演示如何下載、編譯任意版本的 RocketMQ.)

1. 安裝 git,jdk, maven 等工具(參考 baidu/google)

  • jdk 安裝

    • jdk 下載:

    • jdk 安裝

      • macos:

      • windows:

  • maven 安裝

  • git 安裝 ( 可選,不安裝的話直接下載 4.9.3 原始碼: )

    • 下載地址:

2.  下載最新 release 程式碼(這裡以 git 為例,如果沒有安裝 git 直接從 github release 頁面下載)

在自己電腦上, 進入命令列, 選擇一個儲存原始碼的目錄,這裡我把原始碼儲存到 /tiger/tmp 為例

2.1 建立程式碼儲存目錄(已建立則不操作)並進入程式碼儲存目錄:

mkdir -p /tiger/tmpcd /tiger/tmp

2.2 克隆程式碼

git clone --branch release-4.9.3 

2.3 進入原始碼根目錄:

cd rocketmq

3. 編譯和打包原始碼

編譯打包成功後, 我們執行:

cd distribution/targetls -l

 

二、如何部署一個簡單的 RocketMQ 叢集

(本教程將演示如何利用編譯結果,部署一個 1Namesrv + 1Broker 的 RocketMQ 叢集)

1. 找到上一章節的編譯打包結果

cd /tiger/tmp/rocketmq/distribution/target/ls -l

RocketMQ系列一:入門級使用演示

 

2. 安裝 Namesrv, Broker

  • 建立部署臨時目錄 (已建立則忽略)
mkdir -p /tiger/rocketmq/namesrv1mkdir -p /tiger/rocketmq/broker1

 

 

  • 拷貝 rocketmq-4.9.4-SNAPSHOT 裡面的內容,分別拷貝到 /tiger/rocketmq/namesrv1, /tiger/rocketmq/broker1,
cp -R /tiger/tmp/rocketmq/distribution/target/rocketmq-4.9.4-SNAPSHOT/rocketmq-4.9.4-SNAPSHOT/* /tiger/rocketmq/namesrv1cp -R /tiger/tmp/rocketmq/distribution/target/rocketmq-4.9.4-SNAPSHOT/rocketmq-4.9.4-SNAPSHOT/* /tiger/rocketmq/broker1

 

  • 檢視結果如下
cd /tiger/rocketmq/ls -l

3. 修改日誌配置、jvm 配置等其他配置

  • 修改 namesrv 配置
    • 修改 namesrv 日誌配置  。進入 namesrv 部署根目錄,修改日誌配置檔案。主要修改點:日誌預設儲存路徑, 儲存天數,每個日誌檔案大小等。
cd /tiger/rocketmq/namesrv1vim conf/logback_namesrv.xml
  • RocketMQ系列一:入門級使用演示
  • 修改 namesrv JVM 配置。進入 namesrv 部署根目錄:
cd /tiger/rocketmq/namesrv1
  • 修改 JVM 配置, 參考修改 JAVA_OPT 等如下:
vim bin/runserver.sh
  • 修改 broker 配置。修改點類似 namesrv,只是修改的配置檔案不一樣。
    • 修改 broker 日誌配置  (實際部署需要  )。進入 broker 部署根目錄:
cd /tiger/rocketmq/broker1
  • 編輯日誌配置檔案:
vim conf/logback_broker.xml

 

  • 修改 brokerJVM 配置。進入 broker 部署根目錄
cd /tiger/rocketmq/broker1
  • 修改 JVM 配置檔案
vim bin/runbroker.sh

4. 啟動叢集並測試傳送、消費

  • 啟動 namesrv。
cd /tiger/rocketmq/namesrv1nohup sh bin/mqnamesrv &
  • 啟動 broker
cd /tiger/rocketmq/broker1nohup sh bin/mqbroker -n localhost:9876 &

 

  • check namesrv 和 broker 程式啟動是否正常:
ps -ef | grep rocketmq
  • 傳送、消費訊息來驗證叢集是否正常
    • 設定 namesrv 環境變數:
export NAMESRV_ADDR=localhost:9876
  • 進入 broker 根目錄
cd /tiger/rocketmq/broker1
  • 傳送訊息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  • 傳送成功會列印:
  • RocketMQ系列一:入門級使用演示

 

  • 消費訊息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
  • 消費成功會列印:
  • RocketMQ系列一:入門級使用演示
 
三、如何使用 Java 傳送和消費訊息

(本教程將簡單演示如何使用純 java client 傳送和消費訊息。)

1. 下載 java 程式碼 demo

git clone 

 

2. 打包,執行程式碼 demo

找到當前實驗環境的公網 ip,替換 mvn exec:java 命令中的 namesrv ip 地址後,再執行命令, 可以看到正常生產和消費輸出

mvn clean packagemvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

 

3. Demo 程式碼說明

RocketMQ Java Client 使用的套路分為三個步驟

步驟 1: 建立生產者、消費者例項

步驟 2: 設定例項屬性或者引數

步驟 3: 啟動

 

比如消費程式碼如下

RocketMQ系列一:入門級使用演示

 

四、如何使用 Spring 接入 RocketMQ

(本教程將演示如何在 spring 框架中使用 RocketMQ 傳送、消費訊息。)

1. 下載 RocketMQ Spring 程式碼 demo

git clone 

 

2. 打包,執行程式碼 demo

找到當前實驗環境的公網 ip, 替換 mvn exec:java 命令中的 namesrv ip 地址後,再執行命令, 可以看到正常生產和消費輸出

mvn clean packagemvn exec:java -Dexec.args="xxx.xxx.xxx.xxx:9876" -Dexec.mainClass="org.apache.rocketmqdemos.Startup" -Dexec.classpathScope=runtime

 

3. Demo 程式碼說明

  • RocketMQ Spring Client 中生產者使用的套路分為兩個步驟

步驟 1: 建立 RocetMQ 客戶端模板物件: RocketMQTemplate, 並且注入 namesrv 等引數。

步驟 2: 呼叫 RocketMQTemplate 例項的方法即可。

 

比如注入生產者程式碼如下

RocketMQ系列一:入門級使用演示

 

  • RocketMQ Spring Client 中消費者只需要一步就可以直接使用

繼承 RocketMQListener 類,實現 onMessage () 方法即可, demo 程式碼如下:

RocketMQ系列一:入門級使用演示

 

五、如何使用 Golang 接入 RocketMQ

(本教程將演示如何使用 golang 傳送、消費訊息。)

1. 下載 RocketMQ Golang 程式碼 demo

git clone 

 

2. 打包,執行程式碼 demo

找到當前實驗環境的公網 ip啟動命令新增正確的 namesrv 地址,可以看到正常生產和消費輸出

go build./main xxx.xxx.xxx.xxx:9876

 

3. Demo 程式碼說明

RocketMQ Golang Client 中生產者、消費者使用的套路和 Java client 十分相似, 只是生產者、消費者屬性是初始化的時候直接設定。

RocketMQ系列一:入門級使用演示

 

六、如何使用 Python 接入 RocketMQ

(本教程將演示如何使用 python 傳送、消費訊息。

安裝 python 相關環境 

1.1 python2.7 實驗環境安裝

1.2 安裝 cpp 動態庫

 wget 
sudo rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

1.3 安裝 python 客戶端

pip install rocketmq-client-python

 

2. 下載 RocketMQ Golang 程式碼 demo

git clone 

 

3. 執行生產者 demo 程式碼

找到當前實驗環境的公網 ip, 啟動命令新增正確的 namesrv 地址,可以看到正常生產和消費輸出

cd src// 執行生產者demopython producer.py xxx.xxx.xxx.xxx:9876// 執行消費者demopython consumer.py xxx.xxx.xxx.xxx:9876

 

3. Demo 程式碼說明

RocketMQ Python Client 中生產者、消費者使用的套路和 Java client 十分相似, 只是生產者、消費者屬性是初始化的時候直接設定。

生產者程式碼 demo 如下:

RocketMQ系列一:入門級使用演示

 

七、如何使用 C++ 接入 RocketMQ

(本教程將演示如何使用 C++ 傳送、消費訊息。)

安裝 cpp 動態庫以及 gcc 相關環境 

1.1 安裝 g++,gcc 等

yum install gcc gcc-c++ make -y

 

1.2 安裝 cpp 動態庫

 wget 
sudo rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

 

2. 下載 RocketMQ C++ 程式碼 demo

git clone 

 

3. 執行生產者 demo 程式碼

找到當前實驗環境的公網 ip啟動命令新增正確的 namesrv 地址,可以看到正常生產和消費輸出

// 打包make clean && make// 執行程式碼demo./main xxx.xxx.xxx.xxx:9876

 

3. Demo 程式碼說明

RocketMQ C++ Client 中生產者、消費者使用的套路和 golang client 十分相似, 只是生產者、消費者屬性是初始化的時候直接設定。

比如生產者程式碼 demo 如下:

RocketMQ系列一:入門級使用演示


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975905/viewspace-2905837/,如需轉載,請註明出處,否則將追究法律責任。

相關文章