Centos 安裝單機版 RocketMQ 4.7.0

 

一、環境信息

  • centos7
  • jdk 8
  • rocketmq 4.7.0

二、安裝

進入軟件安裝包目錄

cd /home/software/

下載RocketMQ的 Binary版安裝包,也可以上傳自己編譯的

wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip   

解壓文件並重命名目錄

unzip rocketmq-all-4.7.0-bin-release.zip
# 重命名目錄名
mv rocketmq-all-4.7.0-bin-release rocketmq

將目錄移動 /usr/local 目錄下

mv rocketmq /usr/local

查看目錄包含內容

cd /usr/local/rocketmq 
ll
drwxr-xr-x 2 root root  4096 Mar  5 19:44 benchmark
drwxr-xr-x 3 root root  4096 Mar  4 09:59 bin
drwxr-xr-x 6 root root  4096 Mar  4 09:59 conf
drwxr-xr-x 2 root root  4096 Mar  5 19:44 lib
-rw-r--r-- 1 root root 17336 Mar  4 09:59 LICENSE
-rw-r--r-- 1 root root  1338 Mar  4 09:59 NOTICE
-rw-r--r-- 1 root root  4948 Mar  4 09:59 README.md
  • LICENSE、NOTICE、README.md 包含一些版本聲明和功能聲明信息;

  • benchmark 裏包含運行 benchmark 程序的 shell 腳本;

  • bin 目錄包含各種使用 RocketMQ 的 shell 和 cmd 腳本,如啓動 NameServer 的腳本 mqnamesrv,啓動 Broker 的腳本 mqbroker 等;

  • conf ** 目錄存放配置文件,包括三種方式的 broker 配置文件 、logback** 日誌配置文件等;

  • lib 目錄包含 RocketMQ各模塊的 jar 包和依賴的其他 jar 包。

三、啓動服務

3.1 啓動順序

先啓動 NameServer,然後啓動 Broker

3.2 啓動 NameServer

nohup sh bin/mqnamesrv &

通過 JPS 命令查看Java 進程

[root@VM_0_15_centos rocketmq]# jps
12833 Jps

發現 NameServer並沒有啓動,我們來查看日誌看看錯誤原因:

tail -n 30 nohup.out

信息如下:

# 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/rocketmq/hs_err_pid12459.log

可以看到是因爲內存不足導致無法啓動,這是因爲RocketMQ 默認的配置需要在4G內存以上的環境才能正常需要,我們的服務器只有2G所以會啓動失敗,我們要調整下它的配置:

vim bin/runserver.sh

可以看到默認的內存是 4G

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

我們將其都調整爲 1G

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

同理 Broker 也會有這個問題,我們也來一起配置下

vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

調整爲 1G:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

重新啓動 NameServer:

nohup sh bin/mqnamesrv &

查看進程:

[root@VM_0_15_centos bin]# jps
1781 NamesrvStartup
1800 Jps

可以看到已經啓動了

3.3 啓動 Broker

nohup ./bin/mqbroker -n monchickey:9876 &

查看進程:

[root@localhost rocketmq]# jps
1844 Jps
1781 NamesrvStartup
1837 BrokerStartup

可以看到 Broker 也啓動了。

3.4 啓動消息生產消費測試

設置環境變量:服務器的位置

export NAMESRV_ADDR=localhost:9876       

生產消息:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId=C0A8892F09D44DC639966908745C0000, offsetMsgId=C0A8892F00002A9F00000000000249FA, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost, queueId=1], queueOffset=209]
SendResult [sendStatus=SEND_OK, msgId=C0A8892F09D44DC63996690874790001, offsetMsgId=C0A8892F00002A9F0000000000024AAC, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost, queueId=2], queueOffset=209]

消費消息:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_1 Receive New Messages: [MessageExt [brokerName=localhost, queueId=3, storeSize=180, queueOffset=32, sysFlag=0, bornTimestamp=1584753866001, bornHost=/192.168.137.47:46826, storeTimestamp=1584753866003, storeHost=/192.168.137.47:10911, msgId=C0A8892F00002A9F0000000000005AFA, commitLogOffset=23290, bodyCRC=724156045, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=208, CONSUME_START_TIME=1584754056909, UNIQ_KEY=C0A8892F08E74DC639966903F1100082, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 51, 48], transactionId='null'}]] 

注:我們這裏使用官方提供的 demo 程序來驗證下 MQ 的生產和消費

3.5 停止服務

# 停止 Broker
sh bin/mqshutdown broker
# 停止 NameServer  
sh bin/mqshutdown namesrv

3.6 查詢端口占用

# 通過端口號查找進程,得到進程pid號
sudo lsof -i:端口號
# 殺死進程  
sudo kill pid號
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章