本篇博客是单机版的RocketMQ安装教程,能够满足基本的学习使用,属于入门级的教程,如果想要搭集群部署,可以参考其他资料,进行配置即可。
文章目录
- 一、环境准备
- 二、安装过程
- 1. 编译源文件
- 2. 配置RocketMQ
- 2.1 配置JVM参数
- 2.2 配置JVM的ext路径
- 三、启动RocketMQ
- 1. 启动NameServer
- 2. 启动Broker
- 3. 默认日志和信息存储位置
- 四、测试是否启动成功
- 1. 查看进程状态
- 2. 运行测试Producer
- 3. 运行测试Consumer
- 附:常用Rocket MQ命令
一、环境准备
JDK 1.8+必须在/etc/profile文件中配置环境java和maven的环境变量:
Maven 3.2+
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JAVA_HOME
MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4/
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin
二、安装过程 准备RocketMQ解压后的安装包源文件:
rocketmq-all-4.7.0-source-release
1. 编译源文件
[root@8e597ba7e0c4 ~]# cd rocketmq-all-4.7.0-source-release/
[root@8e597ba7e0c4 rocketmq-all-4.7.0-source-release]# mvn -Prelease-all -DskipTests clean install -U
过程有点长,需要耐心等待。
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Apache RocketMQ 4.7.0 4.7.0 ........................ SUCCESS [28:25 min]
[INFO] rocketmq-logging 4.7.0 ............................. SUCCESS [02:42 min]
[INFO] rocketmq-remoting 4.7.0 ............................ SUCCESS [ 43.422 s]
[INFO] rocketmq-common 4.7.0 .............................. SUCCESS [ 11.482 s]
[INFO] rocketmq-client 4.7.0 .............................. SUCCESS [ 11.573 s]
[INFO] rocketmq-store 4.7.0 ............................... SUCCESS [8.456 s]
[INFO] rocketmq-srvutil 4.7.0 ............................. SUCCESS [0.430 s]
[INFO] rocketmq-filter 4.7.0 .............................. SUCCESS [ 10.050 s]
[INFO] rocketmq-acl 4.7.0 ................................. SUCCESS [4.657 s]
[INFO] rocketmq-broker 4.7.0 .............................. SUCCESS [2.780 s]
[INFO] rocketmq-tools 4.7.0 ............................... SUCCESS [1.959 s]
[INFO] rocketmq-namesrv 4.7.0 ............................. SUCCESS [0.871 s]
[INFO] rocketmq-logappender 4.7.0 ......................... SUCCESS [2.929 s]
[INFO] rocketmq-openmessaging 4.7.0 ....................... SUCCESS [1.773 s]
[INFO] rocketmq-example 4.7.0 ............................. SUCCESS [0.954 s]
[INFO] rocketmq-test 4.7.0 ................................ SUCCESS [4.984 s]
[INFO] rocketmq-distribution 4.7.0 4.7.0 .................. SUCCESS [03:10 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 36:15 min
[INFO] Finished at: 2020-07-22T03:11:55Z
[INFO] ------------------------------------------------------------------------
将
rocketmq-all-4.7.0-source-release/distribution/target/rocketmq-4.7.0
目录下的rocketmq-4.7.0
文件夹拷贝到/usr/local/rocket
目录下:[root@8e597ba7e0c4 target]# mkdir /usr/local/rocket
[root@8e597ba7e0c4 rocketmq-4.7.0]# cp -r rocketmq-4.7.0/ /usr/local/rocket/
2. 配置RocketMQ
2.1 配置JVM参数
[root@8e597ba7e0c4 bin]# nohup sh mqnamesrv & tail -fnohup.out
【服务器运维|RocketMQ安装启动教程(单机版)】发现报错信息:
OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
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/rocket/rocketmq-4.7.0/bin/hs_err_pid715.log
大概意思就是你的运行内存不足,因为默认RocketMQ的JVM内存比较大,需要配置它的JVM参数。
修改
runserver.sh
:JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
修改
runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn128m"
修改
tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
2.2 配置JVM的ext路径 查看broker列表:
sh mqadmin clusterList -n localhost:9876
出现报错信息:
org.apache.rocketmq.tools.command.SubCommandException: ClusterListSubCommand command failed
at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:93)
at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:139)
at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:90)
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:73)
at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:68)
at org.apache.rocketmq.acl.common.AclUtils.calSignature(AclUtils.java:69)
at org.apache.rocketmq.acl.common.AclClientRPCHook.doBeforeRequest(AclClientRPCHook.java:44)
at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.doBeforeRpcHooks(NettyRemotingAbstract.java:172)
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:368)
at org.apache.rocketmq.client.impl.MQClientAPIImpl.getBrokerClusterInfo(MQClientAPIImpl.java:1339)
at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.examineBrokerClusterInfo(DefaultMQAdminExtImpl.java:306)
at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.examineBrokerClusterInfo(DefaultMQAdminExt.java:251)
at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.printClusterBaseInfo(ClusterListSubCommand.java:172)
at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:88)
... 2 more
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:63)
at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:79)
... 13 more
Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
at javax.crypto.Mac.getInstance(Mac.java:181)
at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:57)
... 14 more
配置
tools.sh
的"Djava.ext.dirs",添加jvm的ext绝对路径:/usr/lib/jvm/java-1.8.0-openjdk/jre/lib/ext
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk/jre/lib/ext"
再次查看broker列表:
[root@8e597ba7e0c4 bin]# sh mqadmin clusterList -n localhost:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name#Broker Name#BID#Addr#Version#InTPS(LOAD)#OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultClusterbroker-a0172.17.0.2:10911V4_7_00.00(0,0ms)0.00(0,0ms)0 443166.62 -1.0000
三、启动RocketMQ 1. 启动NameServer
[root@8e597ba7e0c4 bin]# nohup sh mqnamesrv & tail -fnohup.out
2. 启动Broker
[root@8e597ba7e0c4 bin]# nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true -c ../conf/broker.conf
启动完成后观察日志情况:
[root@8e597ba7e0c4 bin]# nohup sh mqnamesrv & tail -fnohup.out
[1] 956
nohup: ignoring input and appending output to 'nohup.out'
# 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/rocket/rocketmq-4.7.0/bin/hs_err_pid839.log
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/rocket/rocketmq-4.7.0/bin/hs_err_pid891.log
OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
The broker[broker-a, 172.17.0.2:10911] boot success. serializeType=JSON and name server is localhost:9876
3. 默认日志和信息存储位置
在
/root
目录下,为RocketMQ默认的日志和相关信息的存储位置:drwxr-xr-x. 3 root root26 Jul 22 04:55 logs
drwxr-xr-x. 3 root root50 Jul 22 06:48 store
四、测试是否启动成功 1. 查看进程状态
[root@8e597ba7e0c4 ~]# jps
1655 Jps
1464 BrokerStartup
1437 NamesrvStartup
2. 运行测试Producer
[root@8e597ba7e0c4 bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Producer
05:55:00.234 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
SendResult [sendStatus=SEND_OK, msgId=AC11000204436BC7C0546D6A91CF0000, offsetMsgId=6451B45400002A9F000014D8EFB1AB8C, messageQueue=MessageQueue [topic=TopicTest, brokerName=taobao.drc.9, queueId=7], queueOffset=14931]
SendResult [sendStatus=SEND_OK, msgId=AC11000204436BC7C0546D6A92120001, offsetMsgId=6451B45300002A9F000004BFEB56232D, messageQueue=MessageQueue [topic=TopicTest, brokerName=taobaodaily-04, queueId=0], queueOffset=1368]
......
3. 运行测试Consumer
[root@8e597ba7e0c4 bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
05:56:06.485 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
Consumer Started.
ConsumeMessageThread_1 Receive New Messages: [MessageExt [brokerName=taobaodaily-06, queueId=2, storeSize=273, queueOffset=2457, sysFlag=0, bornTimestamp=1595319725376, bornHost=/11.164.198.52:43906, storeTimestamp=1595319725433, storeHost=/11.163.33.8:10911, msgId=0BA3210800002A9F00000AE2141D8F88, commitLogOffset=11966116368264, bodyCRC=532471758, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=2457, TRACE_ON=true, eagleTraceId=0ba4c63415953197253766635dda7e, MAX_OFFSET=2536, MSG_REGION=DefaultRegion, CONSUME_START_TIME=1595397389004, UNIQ_KEY=0BA4C634999E2E0FA5D36A825140151A, WAIT=true, TAGS=TagA, eagleRpcId=9.1}, body=[72, 101, 108, 108, 111, 32, 77, 101, 116, 97, 81, 32, 48], transactionId='null'}]]
......
附:常用Rocket MQ命令
#启动nameServer并查看启动状态
nohup sh mqnamesrv & tail -fnohup.out#启动Broker
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true -c ../conf/broker.conf#创建(修改)Topic
sh mqadmin updateTopic -b localhost:10911 -t testTopic -n localhost:9876#查询topic
sh mqadmin topicList -n localhost:9876#停止Broker
sh mqshutdown broker#停止nameServer
sh mqshutdown namesrv查看所有broker列表:
sh mqadmin clusterList -n localhost:9876查看topic列表:
sh mqadmin topicList -n localhost:9876##测试(非集群模式)
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- 网络|一文彻底搞懂前端监控
- 个人日记|K8s中Pod生命周期和重启策略
- html5|各行业工资单出炉 IT类连续多年霸占“榜首”位置
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
- r语言|手把手(R语言文本挖掘和词云可视化实践)