01. RocketMQ編譯安裝


01. RocketMQ編譯安裝

介紹

RocketMQ是阿里推出的,現在是Apacha頂級項目。它有兩個優勢:

  1. 它服務在阿里內部體系里面,比方說用在淘寶里面,支撐了雙十一,它的性能是極高的
  2. RocketMQ相比其它中間件,因為它是用Java開發的,所以它對Java程序員來說更加友好

其它中間件介紹

中間件名稱 所用語言 是否支持JMS 優勢
RocketMQ Java 不支持 阿里廣泛使用,原生面向集群
ActiveMQ Java 支持 結構簡單,小項目第一選擇
Kafka Scala 未知 性能高
RabbitMQ Erlang 未知 性能高

主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。

之前阿里巴巴也是使用ActiveMQ,隨着業務發展,ActiveMQ IO 模塊出現瓶頸,后來阿里巴巴 通過一系列優化但是還是不能很好的解決,之后阿里巴巴把注意力放到了主流消息中間件kafka上面,但是kafka並不能滿足他們的要求,尤其是低延遲和高可靠性。

所以RocketMQ是站在巨人的肩膀上(kafka)MetaQ的內核,又對其進行了優化讓其更滿足互聯網公司的特點。它是純Java開發,具有高吞吐量、高可用性、適合大規模分布式系統應用的特點。 RocketMQ目前在阿里集團被廣泛應用於交易、充值、流計算、消息推送、日志流式處理、binglog分發等場景。

下載RocketMQ

各個版本的JDK需求說明

通過官網進行下載

官方網站

下面是當前官網的rocketmq下載地址

將下載好的zip放到linux服務器上面,然后進行解壓

通過Github下載源碼並編譯

Github地址

將源碼放到服務器上面,使用tar xvf rocketmq-rocketmq-all-4.9.2.tar.gz將源碼進行解壓。

編譯之前先要確保本地服務器上面有maven軟件,沒有的話請自行百度進行安裝,后續我再出相關的教程

進入到解壓后的目錄,然后使用mvn -Prelease-all -DskipTests clean install -U進行編譯。這里說明一下這個命令的含義,-Prelease-all代表選擇的profile是release-all-DskipTests代表跳過測試步驟,-U代表強制刷新本地倉庫不存在release版和所有的snapshots版本(其實我也不懂是什么意思,我看這篇博客是這么解釋的)

耐心等待源碼編譯完畢

進入distribution/target目錄,將rocketmq-4.9.2移出來,這個目錄里面就是我們需要的rocketmq的應用

運行rocketmq

rocketmq目錄說明

進入到bin目錄下面,最主要的是兩個程序:mqbrokermqnamesrv

切換JDK版本

因為rocketmq對JDK版本有要求,如果忘記了JDK的安裝路徑,可以通過命令java -verbose來查詢java的安裝路徑,這個命令最后就會顯示出java的安裝路徑

想要切換JDK版本就是把/etc/profile下面的JAVA_HOME和PATH修改掉,然后用source /etc/profile使配置生效

對於CentOS進行安裝的JDK,好像有alternatives方式來切換java版本,具體只能自行百度了

啟動namesrv

編輯一下runserver.sh,搜索一下-Xms找到內存大小,把內存改小一點。如果不改的話執行后面的命令可能會報錯內存不夠

運行當前目錄下面的./mqnamesrv,然后就能把這個程序啟動起來了

這里說明一下,namesvr你可以把它想象成zookeeper、eureka、nacos,它就是一個注冊中心,后面所有的broker(也就是實際干活的進程)都注冊到它上面

啟動broker

再開啟一個窗口,編輯一下runbroker.sh,搜索一下-Xms找到內存大小,把內存改小一點。如果不改的話,默認啟動要分配8G內存,幾乎所有的機器都會報錯內存不夠

運行當前目錄下面的./mqbroker -n localhost:9876,然后把broker啟動起來,並讓broker連接到namesvr上面。后面的-n localhost:9876必須制定,如果不指定,后面運行生產者腳本的時候會報錯No route info of this topic: TopicTest

這里有可能會報錯Failed to obtain the host name,配置一下/etc/hosts,將自己服務器的IP地址和機器名映射好

broker你可以想象成一個實際干活的人,它里面維護了很多個主題topic,每個主題topic也就是一個消息隊列

運行生產者腳本

再開啟一個窗口,修改一下tools.sh,在最后一句話前面增加export NAMESRV_ADDR=localhost:9876

這句話如果不加的話,執行后面的語句會報錯connect to null failed

運行生產者腳本:./tools.sh org.apache.rocketmq.example.quickstart.Producer

運行消費者腳本

使用命令./tools.sh org.apache.rocketmq.example.quickstart.Consumer,就能把剛才生產的內容都消費掉

rocketmq-dashboard

rocketmq也有一個圖形化的客戶端,原來它是rocketmq-externals下面的一個子模塊,現在單獨成為了一個頂級項目,叫做rocketmq-dashboard,下載源碼,進入目錄,使用命令mvn clean package -Dmaven.test.skip=true進行編譯

編譯完畢之后,進入target目錄,運行java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar

訪問IP:8080打開控制台,剛打開的時候會發現一堆報錯信息,沒關系,切換到OPS選項卡,在NameServerAddressList下面輸入IP:9876,然后按回車,再按UPDATE按鈕,將NameServerAddress配置上去

如果不想很麻煩,每次啟動的時候都配置NameServerAddress,可以運行cp ../src/main/resources/application.properties .,將application.properties文件拷貝到jar包所在的target目錄,然后編輯這個application.properties文件,搜索rocketmq.config.namesrvAddr,將NameSrv地址配置上去,保存完畢文件,重啟應用。

或者也可以使用java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --rocketmq.config.namesrvAddr=IP:9876來啟動應用

下面是RocketMQ-Dashboard里面各個項目的說明

項目 說明
OPS 配置NameServer地址
Dashboard 控制台,可以看到前十的Broker,Broker五分鍾的趨勢,前十的Topic,Topic五分鍾的趨勢
Cluster 集群
Topic 主題,主題包括:普通、重試、死信、系統
Consumer 消費者
Producer 生產者
Message 消息
DLQMessage 死信消息
MessageTrace 消息軌跡


免責聲明!

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



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