RocketMQ 4.4.0安装教程

一、系统要求

64位操作系统,生产环境建议Linux/Unix/MacOS(Windows操作系统安装说明详见 Windows操作系统安装教程)
64位JDK 1.8(目前RocketMQ不支持 JDK 11)
Maven
Git
4G+的可用磁盘

安装步骤:

版本:rocketmq-all-4.4.0-bin-release.zip

  1. 解压文件并存放在 /usr/local/mq目录下:
unzip rocketmq-all-4.4.0-bin-release.zip -d /usr/local/mq
  1. 更改解压后的文件名:
mv rocketmq-all-4.4.0-bin-release/ rocketmq
  1. 切换目录到RocketMQ根目录
cd /usr/local/mq/rocketmq
  1. 启动nameServer
nohup sh bin/mqnamesrv &
  1. 查看是否启动成功
netstat -apn | grep 9876

在这里插入图片描述
或者输入下面的命令:(打印日志)

tail -f ~/logs/rocketmqlogs/namesrv.log

#如果成功启动,能看到类似如下的日志:
2019-07-18 17:03:56 INFO main - The Name Server boot success. …

  1. 启动 Broker
nohup sh bin/mqbroker -n localhost:9876 &

验证是否启动成功

tail -f ~/logs/rocketmqlogs/broker.log

#如果启动成功,能看到类似如下的日志:
2019-07-18 17:08:41 INFO main - The broker[itmuchcomdeMacBook-Pro.local, 192.168.43.197:10911] boot success. serializeType=JSON and name server is localhost:9876

3.2 验证RocketMQ功能正常(可选)
3.2.1 验证生产消息正常
执行如下命令:

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

能看到类似如下输出:

SendResult [sendStatus=SEND_OK, msgId=C0A82BC5F36C511D50C05B41…
3.2.2 验证消费消息正常
执行如下命令:

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

能看到类似如下输出:

ConsumeMessageThread_4 Receive New Messages: [MessageExt [queueId=3, stor…

3.3 停止

依次执行以下两条命令即可

#命令

sh bin/mqshutdown broker

输出如下信息说明停止成功
The mqbroker(36695) is running…
Send shutdown request to mqbroker(36695) OK

#命令

sh bin/mqshutdown namesrv

#输出如下信息说明停止成功
The mqnamesrv(36664) is running…
Send shutdown request to mqnamesrv(36664) OK

如果 tail -f ~/logs/rocketmqlogs/broker.log 提示找不到文件,则打开 当前目录(apache-rocketmq)下的 nohup.out 日志文件查看,发现启动 Broker 失败:无法分配内存
Java HotSpot™ 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:
#/usr/local/rocketmq-all-4.3.0/distribution/target/apache-rocketmq/hs_err_pid7209.log
内存分配失败解决办法
这是因为 apache-rocketmq/bin 目录下启动 nameserv 与 broker 的 runbroker.sh 和 runserver.sh 文件中默认分配的内存太大,而系统实际内存却太小导致启动失败
通常像虚拟机上安装的 CentOS 服务器内存可能是没有高的,只能调小。实际中应该根据服务器内存情况,配置一个合适的值
找到下面的 runbroker.sh 和 runserver.sh 文件
[root@localhost bin]# pwd

cd /usr/local/mq/rocketmq/bin/

[root@localhost bin]#
runserver.sh 文件中 修改 JVM 配置下的第一行,将原来 4g 调小一点
#===========================================================================================
#JVM Configuration
#===========================================================================================
#JAVA_OPT=" J A V A O P T s e r v e r X m s 4 g X m x 4 g X m n 2 g X X : M e t a s p a c e S i z e = 128 m X X : M a x M e t a s p a c e S i z e = 320 m " J A V A O P T = " {JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" JAVA_OPT=" {JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT=" J A V A O P T X X : + U s e C o n c M a r k S w e e p G C X X : + U s e C M S C o m p a c t A t F u l l C o l l e c t i o n X X : C M S I n i t i a t i n g O c c u p a n c y F r a c t i o n = 70 X X : + C M S P a r a l l e l R e m a r k E n a b l e d X X : S o f t R e f L R U P o l i c y M S P e r M B = 0 X X : + C M S C l a s s U n l o a d i n g E n a b l e d X X : S u r v i v o r R a t i o = 8 X X : U s e P a r N e w G C " J A V A O P T = " {JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC" JAVA_OPT=" {JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails"
JAVA_OPT=" J A V A O P T X X : O m i t S t a c k T r a c e I n F a s t T h r o w " J A V A O P T = " {JAVA_OPT} -XX:-OmitStackTraceInFastThrow" JAVA_OPT=" {JAVA_OPT} -XX:-UseLargePages"
JAVA_OPT=" J A V A O P T D j a v a . e x t . d i r s = {JAVA_OPT} -Djava.ext.dirs= {JAVA_HOME}/jre/lib/ext:KaTeX parse error: Expected 'EOF', got '#' at position 17: …BASE_DIR}/lib" #̲JAVA_OPT="{JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} J A V A O P T E X T " J A V A O P T = " {JAVA_OPT_EXT}" JAVA_OPT=" {JAVA_OPT} -cp ${CLASSPATH}"

$JAVA ${JAVA_OPT} KaTeX parse error: Expected 'EOF', got '#' at position 47: …一行,将原来 8g 调小一点 #̲===============…{JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT=" J A V A O P T s e r v e r X m s 256 m X m x 256 m X m n 125 m " J A V A O P T = " {JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m" JAVA_OPT=" {JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
JAVA_OPT=" J A V A O P T v e r b o s e : g c X l o g g c : / d e v / s h m / m q g c J A V A O P T = " {JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy" JAVA_OPT=" {JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT=" J A V A O P T X X : O m i t S t a c k T r a c e I n F a s t T h r o w " J A V A O P T = " {JAVA_OPT} -XX:-OmitStackTraceInFastThrow" JAVA_OPT=" {JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT=" J A V A O P T X X : M a x D i r e c t M e m o r y S i z e = 15 g " J A V A O P T = " {JAVA_OPT} -XX:MaxDirectMemorySize=15g" JAVA_OPT=" {JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
JAVA_OPT=" J A V A O P T D j a v a . e x t . d i r s = {JAVA_OPT} -Djava.ext.dirs= {JAVA_HOME}/jre/lib/ext:KaTeX parse error: Expected 'EOF', got '#' at position 17: …BASE_DIR}/lib" #̲JAVA_OPT="{JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} J A V A O P T E X T " J A V A O P T = " {JAVA_OPT_EXT}" JAVA_OPT=" {JAVA_OPT} -cp ${CLASSPATH}"
然后再次启动 broker 时就成功了,broker 注册到了 nameserver 上了(localhost:9876
[root@localhost apache-rocketmq]# nohup sh bin/mqbroker -n localhost:9876 &
[2] 7512
[1] 退出 1 nohup sh bin/mqbroker -n localhost:9876
[root@localhost apache-rocketmq]# nohup: 忽略输入并把输出追加到"nohup.out"
[root@localhost apache-rocketmq]# tail -f ~/logs/rocketmqlogs/broker.log
2018-08-10 02:39:20 WARN main - Load default discard message hook service: DefaultTransactionalMessageCheckListener
2018-08-10 02:39:21 INFO FileWatchService - FileWatchService service started
2018-08-10 02:39:21 INFO PullRequestHoldService - PullRequestHoldService service started
2018-08-10 02:39:23 INFO brokerOutApi_thread_1 - register broker to name server localhost:9876 OK
2018-08-10 02:39:23 INFO main - Start transaction service!
2018-08-10 02:39:23 INFO main - The broker[localhost.localdomain, 192.168.58.129:10911] boot success. serializeType=JSON and name server is localhost:9876
2018-08-10 02:39:30 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2018-08-10 02:39:30 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes
2018-08-10 02:39:33 INFO brokerOutApi_thread_2 - register broker to name server localhost:9876 OK
2018-08-10 02:40:03 INFO brokerOutApi_thread_3 - register broker to name server localhost:9876 OK
发送消息

发布了38 篇原创文章 · 获赞 5 · 访问量 928

猜你喜欢

转载自blog.csdn.net/spring_zhangH/article/details/103842770