RocketMQ 4.x 介紹以及安裝


Apache RocketMQ 是阿里開源的一款高性能、高吞吐量的分布式消息中間件.

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

特點

  • 支持 Broker 和 Consumer 端消息過濾
  • 支持發布訂閱模型,和點對點,
  • 支持拉 pull 和推 push 兩種消息模式
  • 單一隊列百萬消息、億級消息堆積
  • 支持單 master 節點,多 master 節點,多 master 多 slave 節點
  • 任意一點都是高可用,水平拓展,Producer、Consumer、隊列都可以分布式
  • 消息失敗重試機制、支持特定 level 的定時消息
  • 新版本底層采用 Netty
  • 4.3.x 支持分布式事務
  • 適合金融類業務,高可用性跟蹤和審計功能。

概念

  • Producer:消息生產者
  • Producer Group:消息生產者組,發送同類消息的一個消息生產組
  • Consumer:消費者
  • Consumer Group:消費同類消息的多個實例
  • Tag:標簽,子主題(二級分類)對 topic 的進一步細化,用於區分同一個主題下的不同業務的消息
  • Topic:主題, 如訂單類消息,queue 是消息的物理管理單位,而 topic 是邏輯管理單位。一個 topic 下可以有多個 queue,默認自動創建是4個,手動創建是8個
  • Message:消息,每個 message 必須指定一個 topic
  • Broker:MQ 程序,接收生產的消息,提供給消費者消費的程序
  • Name Server:給生產和消費者提供路由信息,提供輕量級的服務發現、路由、元數據信息,可以多個部署,互相獨立(比 zookeeper 更輕量)
  • Offset: 偏移量,可以理解為消息進度
  • commit log: 消息存儲會寫在 Commit log 文件里面

學習資源:http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/

 

安裝前提條件(推薦) 64bit OS,Linux/Unix/Mac  64bit(Windows 不兼容),JDK 1.8+;

快速開始 http://rocketmq.apache.org/docs/quick-start/

這里以 Centos 7.2 虛擬機為例

安裝 JDK1.8

第一步:獲取 JDK1.8 安裝包

地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

第二步:解壓安裝包

新建一個文件夾,用來放置安裝包(當然可以使用任意文件夾)進到目錄 /usr/local/software 

解壓:tar -zxvf jdk-8u201-linux-x64.tar.gz
重命名:mv jdk1.8.0_201 jdk8

注意:解壓后生成的文件夾是: jdk1.8.0_201,我這里重命名的目的是為了方便自己看,其實不重命名也無所謂

第三步:配置環境變量

vim /etc/profile

加入以下配置

export JAVA_HOME=/usr/local/software/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

使用 source /etc/profile 讓配置立刻生效

注意:JAVA_HOME 以自己實際情況為准。我這里的是:/usr/local/software/jdk8

 

安裝 Maven

第一步:獲取安裝包

地址:http://maven.apache.org/download.cgi

第二步:解壓安裝包

解壓:tar -zxvf apache-maven-3.6.0-bin.tar.gz
重命名: mv apache-maven-3.6.0 maven

第三步:配置環境變量

vim /etc/profile

加入以下配置

export PATH=/usr/local/software/maven/bin:$PATH

使用 source /etc/profile 讓配置立刻生效

 

安裝 RocketMQ4.X

第一步:獲取安裝包

地址:https://mvnrepository.com/search?q=mybatis

第二步:解壓編譯安裝包

unzip rocketmq-all-4.4.0-source-release.zip
cd rocketmq-all-4.4.0/
mvn -Prelease-all -DskipTests clean install -U

注意:我這里是重命名過的文件夾,原本的文件夾名稱是:rocketmq-all-4.4.0

第三步:啟動

啟動 nameServer

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
nohup sh bin/mqnamesrv &

查看日志 tail -f nohup.out (結尾:The Name Server boot success. serializeType=JSON 表示啟動成功)

啟動 broker (-n指定nameserver地址,nameserver服務端口為9876,broker默認端口10911)

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
nohup sh bin/mqbroker -n localhost:9876 &

關閉 nameserver broker 執行的命令

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

使用 jps 查看進程

第四步:測試

cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
#設置名稱服務地址
export NAMESRV_ADDR=localhost:9876
#投遞消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
​
SendResult [sendStatus=SEND_OK, msgId= ...
​
#消費消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
​
ConsumeMessageThread_%d Receive New Messages: [MessageExt...

 

安裝 RocketMQ 控制台

第一步:獲取源碼包

第二步:解壓源碼包

第三步:修改配置文件和 pom 文件

 

原本這里的版本是快照版本,這里修改為正式版本(也就是把快照后綴刪除即可)

 

這里修改為實際內網地址,集群部署的話,多個地址用英文分號分隔

第四步:進入pom文件所在目錄,使用 mvn clean package -Dmaven.test.skip=true 命令打包

第五步:進入 target 目錄 ,使用命令啟動: java -jar rocketmq-console-ng-1.0.0.jar

守護進程方式啟動命令: nohup java -jar rocketmq-console-ng-1.0.0.jar &

 

常見問題

  • NameServer內存不夠怎么處理

    • 找到 runserver.sh 修改 JAVA_OPT

      報錯問題如下
      [root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv
      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: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12)
      #
      # There is insufficient memory for the Java Runtime Environment to continue.
      # Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
      # An error report file with more information is saved as:
      # /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log
      
      解決如下 編輯 bin/runserver.sh:
      JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

  • Broker內存不足

    • 找到 runbroker.sh 修改 JAVA_OPT

    • JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"

注意:runserver.sh 和 runbroker.sh 這兩個文件在目錄 /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/bin 里

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM