RocketMQ的下载
官网连接:https://rocketmq.apache.org/dowloading/releases/
RocketMQ的启动
Linux下的启动
-
启动集群NameServer,默认端口是9876。
nohup sh bin/mqnamesrv >mqnamesrvlog.out &
-
启动Broker
nohup sh bin/mqbroker -n localhost:9876 >mqbrokerlog.out &
Windows下的启动
- 添加系统环境变量
ROCKETMQ_HOME="D:\rocketmq"
NAMESRV_ADDR="localhost:9876"
- 启动名称服务器
mqnamesrv.cmd
- 启动broker
mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true
启动时碰到的问题
报内存不够的错误
错误信息
OpenJDK 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-4.9.3/hs_err_pid31591.log
因为我服务器的内存只有4g,而brock设置的最小堆是8g,于是报了内存不够的异常
解决方法
修改 bin/runbroker.sh 文件,找到配置java堆的指令
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
我这里是单机测试使用,于是修改成了256m
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"
Windows环境下报主类不能找到的问题
错误信息
找不到或无法加载主类 org.apache.rocketmq.namesrv.NamesrvStartup
解决方法
目录名里不能带有版本号,去掉版本号以及多余符号后解决
启动broker出错问题
错误信息
错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_291\lib\dt.jar;C:\Program
解决方法
一番操作,发现是mqbroker.cmd里CLASSPATH变量值里有空格导致的(硬了,拳头硬了,对着官网启动个mq,一天踩个坑)。找到mqbroker.cmd文件,右键编辑CLASSPATH变量加上双引号即可。
if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"
setlocal
set BASE_DIR=%~dp0
set BASE_DIR=%BASE_DIR:~0,-1%
for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd
set CLASSPATH=.;%BASE_DIR%conf;%BASE_DIR%lib\*;%CLASSPATH%
rem ===========================================================================================
rem JVM Configuration
rem ===========================================================================================
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx256m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:%USERPROFILE%\mq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%"" rem 这里加上双引号,括号
"%JAVA%" %JAVA_OPT% %*