linux下RocketMQ的安裝和API調用中出現的問題的解決 MARK一下

下載和構建

配置環境變量
在/etc/profile最後添加

JAVA_HOME=/soft/jdk1.8.0_111
MAVEN_HOME=/soft/maven/apache-maven-3.5.3

CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
export JAVA_HOME MAVEN_HOME CLASSPATH PATH     

export rocketmq=/soft/RocketMQ/rocketmq-rocketmq-all-4.2.0/distribution/target/apache-rocketmq

使變量生效
. /etc/profile

https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip 下載 4.2.0 的源碼版本,執行以下命令來解壓4.2.0源碼版本並構建二進制文件。

unzip rocketmq-all-4.2.0-source-release.zip

cd rocketmq-all-4.2.0/

mvn -Prelease-all -DskipTests clean install -U

構建成功
linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

由於可能會提示內存不足
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)

調整一下 /soft/RocketMQ/rocketmq-all-4.2.0/distribution/target/apache-rocketmq/bin目錄下的
runbroker.sh 和 runserver.sh的參數

vi runbroker.sh/
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=256m"

vi runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

進入到目錄 :
cd distribution/target/apache-rocketmq/bin

這裏需要構建一個存放log的目錄 /soft/RocketMQ/rocketmqlogs

啓動nameserver
nohup sh mqnamesrv >/soft/RocketMQ/rocketmqlogs/mqnamesrv.log 2>&1 &

啓動broker
nohup sh mqbroker -n localhost:9876 >/soft/RocketMQ/rocketmqlogs/broker.log 2>&1 &

按照模版啓動,模版的新建在文章最後,可以解決api連不上的問題
nohup sh mqbroker -c broker.p -n localhost:9876 >/soft/RocketMQ/rocketmqlogs/broker.log 2>&1 &

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

出現這樣就是成功
linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

發送和接收消息
在發送/接收消息之前,我們需要告訴客戶名稱服務器的位置。RocketMQ 提供了多種方法來實現這一點。爲了簡單起見,我們使用環境變量NAMESRV_ADDR

發送消息:

export NAMESRV_ADDR=localhost:9876

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

接收消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

關閉服務器

sh bin/mqshutdown broker    //停止 broker

sh bin/mqshutdown namesrv   //停止 nameserver

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

幾個常用的命令
上面幾個啓動和關閉 name server 和 broker 的就不再說了,

查看集羣情況 ./mqadmin clusterList -n 127.0.0.1:9876
查看 broker 狀態 ./mqadmin brokerStatus -n 127.0.0.1:9876 -b 172.20.1.138:10911 (注意換成你的 broker 地址)
查看 topic 列表 ./mqadmin topicList -n 127.0.0.1:9876
查看 topic 狀態 ./mqadmin topicStatus -n 127.0.0.1:9876 -t MyTopic (換成你想查詢的 topic)
查看 topic 路由 ./mqadmin topicRoute -n 127.0.0.1:9876 -t MyTopic

===================================================================
安裝web可視化客戶端

1.下載文件(/usr/local目錄下)
https://github.com/apache/rocketmq-externals 地址下載並從本地上傳到服務器

2.解壓(/usr/local目錄下)

yum install -y unzip zip 前提是:unzip解壓文件無法使用

unzip rocketmq-externals-master.zip 解壓文件

3.修改配置文件(usr/local/rocketmq-externals-master/目錄下)

find -name application.properties 可以查看到兩個文件都在rocketmq-console文件目錄下

vim application.properties

rocketmq.config.namesrvAddr=192.168.143.128:9876(ip1:port;ip2:port)

4.編譯(usr/local/rocketmq-externals-master/rocketmq-console/目錄下)

mvn clean package -Dmaven.test.skip=true 如果失敗多編譯幾次--可能是網絡問題

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

編譯成功後,在rocketmq-console目錄下會生成一個目錄:target目錄,該目錄下有啓動rocketmq界面的jar文件

5.啓動web(usr/local/rocketmq-externals-master/rocketmq-console/target目錄下)

java -jar rocketmq-console-ng-1.0.0.jar 啓動 ---當終端斷了該服務就會停止

nohup java -jar rocketmq-console-ng-1.0.0.jar >>/soft/RocketMQ/rocketmqlogs/log.out 2>&1 &
後臺啓動 --當終端斷了也不會停止服務

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

說明啓動成功

http://192.168.143.128:8080
linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

==================================================================

用java代碼實現API的過程中需要注意的幾個問題

1、出現connect to 172.17.42.1:10909 failed
原因分析:我第一次使用的是rocketmq-client-3.4.6,第二次使用的是rocketmq-client-3.5.7,都出現了這個問題。但是原來使用rocketmq-client-3.2.5卻不會出現這個問題。
(1)目前這種寫法Rocket默認開啓了VIP通道,VIP通道端口爲10911-2=10909。若Rocket服務器未啓動端口10909,則報connect to <:10909> failed。
(2)解決方式:增加一行代碼
producer.setVipChannelEnabled(false);

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

2、出現connect to 172.17.42.1:10911 failed
還是外網內網ip的問題
最後經過多方搜索,在官方的用戶說明裏看到下面的方法
在bin目錄下面配置模版

linux下RocketMQ的安裝和API調用中出現的問題的解決  MARK一下

修改後的broker.p文件

namesrvAddr=127.0.0.1:9876
brokerIP1=192.168.143.128
brokerName=localhost
brokerClusterName=DefaultCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
commitIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
transientStorePoolEnable=false

啓動broker的時候用規定的模版文件
nohup sh mqbroker -c broker.p -n localhost:9876 &gt;/soft/RocketMQ/rocketmqlogs/broker.log 2&gt;&1 &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章