RocketMQ安装启动教程(单机版)

本篇博客是单机版的RocketMQ安装教程,能够满足基本的学习使用,属于入门级的教程,如果想要搭集群部署,可以参考其他资料,进行配置即可。

一、环境准备

JDK 1.8+
Maven 3.2+

必须在/etc/profile文件中配置环境java和maven的环境变量:

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 -f  nohup.out

发现报错信息:

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
DefaultCluster    broker-a                0     172.17.0.2:10911       V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 443166.62 -1.0000

三、启动RocketMQ

1. 启动NameServer

[root@8e597ba7e0c4 bin]# nohup sh mqnamesrv & tail -f  nohup.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 -f  nohup.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 root   26 Jul 22 04:55 logs
drwxr-xr-x. 3 root root   50 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 -f  nohup.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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭建華

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值