RocketMq 實戰與原理解析 學習筆記


RocketMq 實戰與原理解析 楊開元
 
1.3.1 下載 安裝 配置
wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
unzip rocketmq-all-4.5.1-bin-release.zip -d . #這里有個點 表示在當前目錄解壓
 
1.3.2 啟動消息隊列
啟動 nameserver
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh /bin/mqnamesrv &
[1] 2463
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup: 忽略輸入並把輸出追加到"nohup.out"
# 上述顯示問題 如下方式解決,但服務是起來了的
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_1.log 2>&1 & #這里也可以導入/dev/null
[2] 2492
啟動 broker
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh bin/mqbroker -n localhost:9876 > /dev/null 2>&1 &
[2] 2654
查看 rocketmq 服務
ps -ef|grep rocketmq
 
1.3.3 示例程序
[root@dev_pc1 bin]# export NAMESRV_ADDR=localhost:9876
生產者 發送消息
[root@dev_pc1 bin]# sh ./tools.sh org.apache.rocketmq.example.quickstart.Producer #當前位於bin目錄
顯示如下
SendResult [sendStatus=SEND_OK, msgId=C0A801080AB80D71636133F9EE3803E7, offsetMsgId=C0A8010800002A9F000000000002BDFE, messageQueue=MessageQueue [topic=TopicTest, brokerName=dev_pc1.rocky.com, queueId=2], queueOffset=249]
03:13:37.490 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true
03:13:37.492 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[192.168.1.8:10911] result: true
消費者 處理消息
[root@dev_pc1 bin]# sh ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
顯示如下
ConsumeMessageThread_9 Receive New Messages: [MessageExt [queueId=2, storeSize=180, queueOffset=246, sysFlag=0, bornTimestamp=1583910817442, bornHost=/192.168.1.8:36446, storeTimestamp=1583910817442, storeHost=/192.168.1.8:10911, msgId=C0A8010800002A9F000000000002B58E, commitLogOffset=177550, bodyCRC=1487577949, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1583911325039, UNIQ_KEY=C0A801080AB80D71636133F9EE2203DB, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 57, 56, 55], transactionId='null'}]]
 
1.3.4 關閉消息隊列
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# sh bin/mqshutdown broker
The mqbroker(2661) is running...
Send shutdown request to mqbroker(2661) OK
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# sh bin/mqshutdown namesrv
The mqnamesrv(2629) is running...
Send shutdown request to mqnamesrv(2629) OK
[2]+ 退出 143 nohup sh bin/mqbroker -n localhost:9876 > /dev/null 2>&1
 
###
other-1
想在另一台物理機也安裝一遍. wget 太慢,局域網內想scp一下。
遇到問題:
[root@dev_pc3 Downloads]# scp root@dev_pc1.rocky.com:/home/rocky/Download/rocketmq-all-4.5.1-bin-release.zip .
The authenticity of host 'dev_pc1.rocky.com (192.168.1.8)' can't be established.
ECDSA key fingerprint is 8f:64:55:5e:2f:73:2d:ab:a6:04:c1:db:83:11:6e:b2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dev_pc1.rocky.com' (ECDSA) to the list of known hosts.
Connection closed by 192.168.1.8
解決方式
[root@dev_pc3 Downloads]# ssh -o StrictHostKeyChecking=no dev_pc1.rocky.com
root@dev_pc1.rocky.com's password:
Last login: Wed Mar 11 01:45:32 2020
[root@dev_pc1 ~]# 這樣子直接遠程連上了pc1機器了
[root@dev_pc1 ~]# exit
logout
Connection to dev_pc1.rocky.com closed.
[root@dev_pc3 Downloads]
再次下載 好了,很快!
[root@dev_pc3 Downloads]# scp root@dev_pc1.rocky.com:/home/rocky/dev_share/rocketmq-all-4.5.1-bin-release.zip .
root@dev_pc1.rocky.com's password:
rocketmq-all-4.5.1-bin-release.zip 100% 12MB 12.0MB/s 00:01 看速度 amazing!!
[root@dev_pc3 Downloads]#
 
other-2
當前就在另一台機器上
[root@dev_pc3 Downloads]# unzip rocketmq-all-4.5.1-bin-release.zip -d .
-bash: unzip: command not found
[root@dev_pc3 Downloads]# yum install unzip
Loaded plugins: fastestmirror
 
####
 
2.2.1 啟動多個 NameServer 和 Broker
步驟一 機器一:
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_1.log 2>&1 &
[1] 3383
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-a.properties > /home/rocky/dev/rocketmq/broke-a.log 2>&1 & 主a
[2] 3428
步驟二 機器二
[root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_2.log 2>&1 &
[root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties >/home/rocky/dev/rocketmq/broker-a-s.log 2>&1 & 從a
[2] 7451
此時 broker-a 主從 都起來了
步驟三 機器二
[root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-b.properties >/home/rocky/dev/rocketmq/broker-b.log 2>&1 & 主b
[3] 7757
步驟四 機器一
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties >/home/rocky/dev/rocketmq/broker-b-s.log 2>&1 & 從b
[3] 3678
這時候才算起來了
 
###
other-3
同時創建多級目錄
mkdir -p /home/rocky/dev/rocketmq/store-a
//TODO 創建一個文件 同時創建不存在的目錄
 
other-4
內存不夠 報錯了
[root@dev_pc3 rocketmq-all-4.5.1-bin-release]# cat /home/rocky/dev/rocketmq/broker-a-s.log
nohup: ignoring input
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 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 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/rocky/Downloads/rocketmq-all-4.5.1-bin-release/hs_err_pid7458.log
這個是啟動 機器二 broker-a-s 時才發現,正常自己試驗,broker-a也要配置修改內存!!
 
修改
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# vi bin/runbroker.sh 改成512m先
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m"
 
other-5
broker-b-s啟動后又自動退出了
[3]+ 退出 255 nohup bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties > /home/rocky/dev/rocketmq/broker-b-s.log 2>&1
查看日志
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]# cat /home/rocky/dev/rocketmq/broker-b-s.log
nohup: 忽略輸入
java.lang.RuntimeException: Lock failed,MQ already started
at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:220)
at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:824)
at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:64)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58)
[root@dev_pc1 rocketmq-all-4.5.1-bin-release]
原因 storePath 2個broker重復
解決方案
改成不同目錄 重啟ok
###
 
搭建 Rocketmq-Console
~1 克隆項目到本地
[root@dev_pc1 dev_share]# git clone https://github.com/apache/rocketmq-externals
正克隆到 'rocketmq-externals'...
~2 進入目錄 修改配置文件
[root@dev_pc1 rocketmq-console]# pwd
/home/rocky/dev_share/rocketmq-externals/rocketmq-console
[root@dev_pc1 rocketmq-console]# vi src/main/resources/application.properties
主要修改2處 其他先默認
server.contextPath=/rocketmq
rocketmq.config.namesrvAddr=dev_pc1.rocky.com:9876;dev_pc3.rocky.com:9876
~3 編譯打包源文件 有點慢這個
[root@dev_pc1 rocketmq-console]# mvn clean package -Dmaven.test.skip=true
[INFO] Scanning for projects...
 
又報錯
[root@dev_pc1 rocketmq-console]# mvn clean package -Dmaven.test.skip=true
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building rocketmq-console-ng 1.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ rocketmq-console-ng ---
[INFO] Deleting /home/rocky/dev_share/rocketmq-externals/rocketmq-console/target
[INFO]
[INFO] --- maven-checkstyle-plugin:2.17:check (validate) @ rocketmq-console-ng ---
[INFO] Starting audit...
/home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java:20:8: error: Unused import - org.springframework.boot.autoconfigure.EnableAutoConfiguration.
Audit done.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.656 s
[INFO] Finished at: 2020-03-12T06:42:14-04:00
[INFO] Final Memory: 22M/258M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (validate) on project rocketmq-console-ng: Failed during checkstyle execution: There is 1 error reported by Checkstyle 6.11.2 with style/rmq_checkstyle.xml ruleset. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
 
 
網上轉了一圈,博客看了一打,沒用上。就這句
/home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java:20
方案
vi /home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java
//import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
上面這個注解,確實引用了,沒使用,就因為這個報錯...注釋掉,再編譯好了...
# 要相信提示!!!!
 
~4 [root@dev_pc1 rocketmq-console]# java -jar target/rocketmq-console-ng-1.0.1.jar
# 如果配置文件沒有填寫Name Server的話,可以在啟動項目時指定namesrvAddr
# $ java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='localhost:9876'
 
 
 


免責聲明!

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



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