RocketMQ系列一:入門級使用演示
實驗簡介
Apache RocketMQ™ 是一個統一的訊息引擎系統, 也是一個輕量級的資料處理平臺.
當你遇到以下類似問題而束手無策時,RocketMQ 可以幫助你解決:
-
重試訊息、死信訊息、事物訊息支援
-
訊息軌跡追蹤
-
訊息過濾
-
IPv6 支援
-
ACL 支援
-
主、副本自動高可靠
-
全面的監控支援
-
管理平臺原生支援
-
Request-Reply 模式支援
本教程會以如何利用原始碼編譯、打包、部署、實際使用 RocketMQ。
實驗實操
一、如何下載、編譯最新版 RocketMQ
(本教程會以如何利用原始碼編譯並打包 RocketMQ 為例,演示如何下載、編譯任意版本的 RocketMQ.)
1. 安裝 git,jdk, maven 等工具(參考 baidu/google)
-
jdk 安裝
-
jdk 下載:
-
jdk 安裝
-
macos:
-
windows:
-
-
-
maven 安裝
-
maven 下載二進位制:
-
maven 安裝 (windows + macos):
-
如果對於國外網站訪問慢, 可以配置 maven 國內映象: https://cloud.tencent.com/developer/article/1452479
-
-
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
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
-
-
修改 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
-
傳送成功會列印:
-
-
消費訊息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
-
消費成功會列印:
-
(本教程將簡單演示如何使用純 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: 啟動
比如消費程式碼如下
四、如何使用 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 Spring Client 中消費者只需要一步就可以直接使用
繼承 RocketMQListener 類,實現 onMessage () 方法即可, demo 程式碼如下:
五、如何使用 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 十分相似, 只是生產者、消費者屬性是初始化的時候直接設定。
六、如何使用 Python 接入 RocketMQ
(本教程將演示如何使用 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 如下:
七、如何使用 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 如下:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975905/viewspace-2905837/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- praat使用入門演示
- RocketMQ入門MQ
- RocketMQ 入門MQ
- RocketMQ快速入門MQ
- SpringMVC入門案例 & 常用API使用演示SpringMVCAPI
- Rocketmq 入門介紹MQ
- MyBatis系列(一):MyBatis入門MyBatis
- Mysql系列一:SQL入門MySql
- 十分鐘入門RocketMQMQ
- RocketMQ系列(一)基本概念MQ
- 入門級TRIZ使用指南
- 正規表示式系列之初級入門篇
- Docker 入門系列一:docker 命令Docker
- Shell 入門系列 (一): 變數變數
- LXD 2.0 系列(一):LXD 入門
- 訊息佇列之-RocketMQ入門佇列MQ
- RocketMQ系列:rocketmq運維控制檯使用詳解(全網獨家)MQ運維
- RocketMQ系列:使用systemd管理nameserver和brokerMQServer
- JAVA快取-Redis入門級使用Java快取Redis
- XGBoost入門系列第一講
- webpack 快速入門 系列 —— 實戰一Web
- Azure Storage 系列(一)入門簡介
- LXD2.0系列(一):LXD入門
- rocketmq事務訊息入門介紹MQ
- Es6初級入門(一)
- odoo 開發入門教程系列-一些使用者介面Odoo
- shell入門系列
- go微服務系列(一) go micro入門Go微服務
- 【Ionic2系列】 一、入門介紹
- iOS架構入門 - MVC模式例項演示iOS架構MVC模式
- 初入laralve-admin(二)入門級使用
- 超級簡單的sql入門(一)SQL
- MapReduce(一):入門級程式wordcount及其分析
- React從入門到精通系列之(21)React頂級APIReactAPI
- Nginx入門級安裝和基礎使用Nginx
- 圖片管理ImageRanger入門級使用說明Ranger
- Spring Boot入門系列(二十六)超級簡單!Spring Data JPA 的使用!Spring Boot
- 快速入門一篇搞定RocketMq-實現微服務實戰落地MQ微服務