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'
 
 
 
原文地址:https://www.cnblogs.com/rocky-fang/p/12501745.html