最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RocetMQ搭建步驟與問題解決之道

 更新時(shí)間:2021年01月04日 11:50:22   作者:freephp  
這篇文章主要給大家介紹了關(guān)于RocetMQ搭建步驟與問題解決之道的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近有在嘗試給項(xiàng)目加入消息中間件服務(wù),首先想到了鼎鼎大名的RocketMQ。RocketMQ是一款高性能的、分布式消息中間件,由阿里開源。它提供了豐富的消息拉取方式,能夠處理上億級(jí)的海量數(shù)據(jù),甚至在阿里雙十上經(jīng)受了超大的請(qǐng)求峰值,其商業(yè)可用性值得依賴和使用。

安裝方式比較簡(jiǎn)單,就是在Rocket官網(wǎng)去下載對(duì)應(yīng)版本的壓縮包。有兩種選擇,一種是binary版本,也就是編譯好的bin文件壓縮包。還有一種是source版,就是需要被編譯的源碼包。

我選擇使用編譯好的bin包,版本為最新的4.8.0。使用如下命令完成下載和解壓。順帶提一句本機(jī)安裝的Java版本是10.0.1,劃重點(diǎn)。

cd ~/Downloads
weget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip
unzip rocketmq-all-4.8.0-bin-release.zip
mv rocketmq-all-4.8.0-bin-release rocketmq

然后需要啟動(dòng)NameServer和Broker Server,首先是NameServer,命令如下所示:

cd ~/Downloads/rocketmq/bin
./mqnamesrv

然后很有可能會(huì)遇到如下的報(bào)錯(cuò):

-Djava.ext.dirs=/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/jre/lib/ext:/Users/tony/Downloads/rocketmq-all-4.8.0-source-release/distribution/bin/../lib:/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/ext is not supported. Use -classpath instead.
Error: Could not create the Java Virtual Machine.

我根據(jù)這段報(bào)錯(cuò)一番艱難地百度\bing\Google之后,發(fā)現(xiàn)沒有人遇到完全類似的問題,唯一接近的是Could not create the java Virtual Machine的報(bào)錯(cuò),我嘗試性進(jìn)行了如下方法。

首先懷疑是因?yàn)槲业腏ava版本太高了,導(dǎo)致有一些runserver.sh里面的參數(shù)設(shè)置不能兼容,因?yàn)閚amesrv會(huì)執(zhí)行runserver.sh里面的命令。按照騰訊云上的原話是:

由于RocketMQ的啟動(dòng)文件都是按照J(rèn)DK8配置的,而前面我特意配置的JDK版本是11,有很多命令參數(shù)不支持導(dǎo)致的,使用JDK8,正常啟動(dòng)沒有問題的。

于是編輯bin/runserver.sh文件,將下面的命令注釋掉:

# 注釋掉下面這行
#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
# 修改成下面這行
export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

然后還需要將JAVA_OPT的參數(shù)注釋一部分,它們的位置是在文件內(nèi)容最后,如下所示:

# 注釋下面這兩行
#JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

是不是看起來很眼熟?這就是前面我們遇到的報(bào)錯(cuò)那段,據(jù)說是Java1.9之后使用-Djava.ext.dirs會(huì)有問題,我去RocketMQ的github上的issue討論看了一下,貌似官方團(tuán)隊(duì)也沒有fix這個(gè)問題,2333。

保存好這些修改,然后重新運(yùn)行mqnamesrv即可,以后臺(tái)程序方式運(yùn)行的命令如下:

nohup sh mqnamesrv &


查看運(yùn)行的日志的命令和其輸出如下:

tail -f ~/logs/rocketmqlogs/namesrv.log
2020-12-31 16:15:30 INFO main - tls.client.authServer = false
2020-12-31 16:15:30 INFO main - tls.client.trustCertPath = null
2020-12-31 16:15:30 INFO main - Using OpenSSL provider
2020-12-31 16:15:30 INFO main - SSLContext created for server
2020-12-31 16:15:30 INFO NettyEventExecutor - NettyEventExecutor service started
2020-12-31 16:15:30 INFO main - Try to start service thread:FileWatchService started:false lastThread:null
2020-12-31 16:15:30 INFO FileWatchService - FileWatchService service started
2020-12-31 16:15:30 INFO main - The Name Server boot success. serializeType=JSON
2020-12-31 16:16:30 INFO NSScheduledThread1 - --------------------------------------------------------
2020-12-31 16:16:30 INFO NSScheduledThread1 - configTable SIZE: 0

說明NameServer已經(jīng)正常啟動(dòng)了。

第二步運(yùn)行Broker Server,還是在bin目錄下執(zhí)行:

./mqbroker

繼續(xù)收獲報(bào)錯(cuò),錯(cuò)誤日志輸出如下所示:

[0.002s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/Volumes/RAMDisk/rmq_broker_gc_%p_%t.log instead.
Unrecognized VM option 'PrintGCDateStamps'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

其本質(zhì)還是無(wú)法創(chuàng)建Java虛擬機(jī),推測(cè)還是出在GC的一些參數(shù)在Java10.0上無(wú)法兼容。查看mqbroker腳本里面的內(nèi)容,可以看到最后一行執(zhí)行了如下命令:

sh ${ROCKETMQ_HOME}/bin/runbroker.sh org.apache.rocketmq.broker.BrokerStartup $@

說明執(zhí)行了runbroker.sh腳本,于是在runbroker.sh文件中找到如下命令:

# 注釋掉下面這行
#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
# 修改成下面這行
export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

這段修改和mqnamesrv的類似,還有下面這段也需要調(diào)整:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

注釋掉一些無(wú)效的命令,改后如下所示:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
#JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
#JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
#JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
#JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
JAVA_OPT="${JAVA_OPT} # 
-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

保存上述修改,然后就可以正常啟動(dòng)Broker Server了,執(zhí)行下面命令:

nohup sh bin/mqbroker -n localhost:9876 &

如果想最簡(jiǎn)單的方式測(cè)試一下服務(wù),那么可以使用RocketMQ腳本封裝好的工具,命令如下:

export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

可能遇到的報(bào)錯(cuò)如下:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
-Djava.ext.dirs=bin/../lib:/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/jre/lib/ext:/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/ext is not supported. Use -classpath instead.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

還是在tools.sh做類似的修改,如下所示:

# 注釋下面這行
#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
# 新增下面這行
export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

....

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
# 注釋掉下面這行,JDK1.9后不再支持該參數(shù)
#JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

重新保存后運(yùn)行,如果看到如下輸出則說明成功了:

st, brokerName=Tony-Mac-Pro.local, queueId=3], queueOffset=247]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764803E0, offsetMsgId=AC101A0000002A9F0000000000031232, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=0], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764A03E1, offsetMsgId=AC101A0000002A9F00000000000312FD, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=1], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764C03E2, offsetMsgId=AC101A0000002A9F00000000000313C8, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=2], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764E03E3, offsetMsgId=AC101A0000002A9F0000000000031493, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=3], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764F03E4, offsetMsgId=AC101A0000002A9F000000000003155E, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=0], queueOffset=249]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7764F03E5, offsetMsgId=AC101A0000002A9F0000000000031629, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=1], queueOffset=249]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7765003E6, offsetMsgId=AC101A0000002A9F00000000000316F4, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=2], queueOffset=249]
SendResult [sendStatus=SEND_OK, msgId=7F000001203D1DE0ACA60ED7765103E7, offsetMsgId=AC101A0000002A9F00000000000317BF, messageQueue=MessageQueue [topic=TopicTest, brokerName=Tony-Mac-Pro.local, queueId=3], queueOffset=249]
21:10:01.562 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[172.16.26.0:10911] result: true
21:10:01.564 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true

最終,我們和RocketMQ和解,完成了這次測(cè)試!

鳴謝下面的幫助,可以參考的資料如:

騰訊云上的教程

官方quick start

到此這篇關(guān)于RocetMQ搭建步驟與問題解決之道的文章就介紹到這了,更多相關(guān)RocetMQ搭建與問題解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 面試必時(shí)必問的JVM 類加載機(jī)制詳解

    面試必時(shí)必問的JVM 類加載機(jī)制詳解

    這篇文章主要介紹了一文讀懂Jvm類加載機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Springboot整合camunda+mysql的集成流程分析

    Springboot整合camunda+mysql的集成流程分析

    本文介紹基于mysql數(shù)據(jù)庫(kù),如何實(shí)現(xiàn)camunda與springboot的集成,如何實(shí)現(xiàn)基于springboot運(yùn)行camunda開源流程引擎,本文分步驟圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • springboot2.1.3配置sftp自定義sftp連接池的詳細(xì)過程

    springboot2.1.3配置sftp自定義sftp連接池的詳細(xì)過程

    這篇文章主要介紹了springboot2.1.3配置sftp自定義sftp連接池的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java編程實(shí)現(xiàn)快速排序及優(yōu)化代碼詳解

    Java編程實(shí)現(xiàn)快速排序及優(yōu)化代碼詳解

    這篇文章主要介紹了Java編程實(shí)現(xiàn)快速排序及優(yōu)化代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • springboot 如何禁用某項(xiàng)健康檢查

    springboot 如何禁用某項(xiàng)健康檢查

    這篇文章主要介紹了springboot 如何禁用某項(xiàng)健康檢查的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • C/C++中的struct結(jié)構(gòu)體詳細(xì)解讀

    C/C++中的struct結(jié)構(gòu)體詳細(xì)解讀

    這篇文章主要介紹了C/C++中的struct結(jié)構(gòu)體詳細(xì)解讀,結(jié)構(gòu)體是由一批數(shù)據(jù)組合而成的結(jié)構(gòu)型數(shù)據(jù),組成結(jié)構(gòu)型數(shù)據(jù)的每個(gè)數(shù)據(jù)稱為結(jié)構(gòu)型數(shù)據(jù)的“成員”,其描述了一塊內(nèi)存區(qū)間的大小及意義,需要的朋友可以參考下
    2023-10-10
  • 利用Java實(shí)現(xiàn)讀取WPS?Excel中嵌入的圖片

    利用Java實(shí)現(xiàn)讀取WPS?Excel中嵌入的圖片

    許多數(shù)據(jù)文件中可能包含嵌入式圖片,這些圖片對(duì)于數(shù)據(jù)分析和可視化非常重要,下面我們就來看看如何使用Java讀取WPS?Excel中嵌入的圖片吧
    2024-11-11
  • java調(diào)用Hbase報(bào)錯(cuò)解決方法

    java調(diào)用Hbase報(bào)錯(cuò)解決方法

    這篇文章主要為大家介紹了java調(diào)用Hbase報(bào)錯(cuò)解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • javaweb實(shí)現(xiàn)文件上傳與下載功能

    javaweb實(shí)現(xiàn)文件上傳與下載功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)文件上傳與下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • SpringMVC參數(shù)的傳遞之如何接收List數(shù)組類型的數(shù)據(jù)

    SpringMVC參數(shù)的傳遞之如何接收List數(shù)組類型的數(shù)據(jù)

    這篇文章主要介紹了SpringMVC參數(shù)的傳遞之如何接收List數(shù)組類型的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論

咸宁市| 渝北区| 延寿县| 华宁县| 察雅县| 余庆县| 贺兰县| 云南省| 陆良县| 浦县| 永胜县| 呈贡县| 合水县| 金阳县| 宁陕县| 英德市| 陇西县| 华容县| 巴彦县| 永平县| 林州市| 贵阳市| 烟台市| 栾城县| 泸州市| 鸡东县| 龙里县| 瑞安市| 广丰县| 高陵县| 利津县| 汉中市| 东山县| 泾川县| 五常市| 谢通门县| 上林县| 合川市| 广河县| 会同县| 富宁县|