10-RocketMQ安装

官方网站
http://rocketmq.apache.org
GitHub
https://github.com/apache/rocketmq

Quick Start

Linux下使用Maven编译源码安装

Rocketmq4.6+需要jdk1.8环境编译和运行

image-20200218135102148

各版本要求

Version Client Broker NameServer
4.0.0-incubating >=1.7 >=1.8 >=1.8
4.1.0-incubating >=1.6 >=1.8 >=1.8
4.2.0 >=1.6 >=1.8 >=1.8
4.3.x >=1.6 >=1.8 >=1.8
4.4.x >=1.6 >=1.8 >=1.8
4.5.x >=1.6 >=1.8 >=1.8
4.6.x >=1.6 >=1.8 >=1.8

1.从GitHub上下载源码并上传到服务器

image-20200218134855528

2.在Linux上安装Maven

下载Maven

1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

添加阿里云镜像
修改maven/conf目录下的settings.xml
mirrors节点下添加

1
2
3
4
5
6
<mirror> 
<id>aliyun-maven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

配置maven环境变量
修改/etc/profile

1
2
export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin

配置java环境变量

1
2
3
export JAVA_HOME="/usr/java/jdk1.8.0_181-amd64"
export CLASS_PATH="$JAVA_HOME/lib"
export PATH=".$PATH:$JAVA_HOME/bin"

环境变量修完执行source /etc/profile立即生效
进入rocketmq主目录编译项目

1
mvn -Prelease-all -DskipTests clean install -U

3.启动nameserver

bin目录下执行

1
./mqnamesrv

正常提示

image-20200218150050167

4.启动Broker

1
./mqbroker -n localhost:9876

正常提示

image-20200218150114714

5.测试消息发送

使用tool.sh脚本执行测试程序
bin目录下执行

1
./tools.sh org.apache.rocketmq.example.quickstart.Producer

提示如下表示成功

image-20200218145049603

6.接受消息

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

控制台rocketmq-console编译安装

下载

https://github.com/apache/rocketmq-externals
中文指南
https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md

上传到服务器并解压缩

编译

进入rocketmq-console目录
执行编译

1
mvn clean package -Dmaven.test.skip=true

启动

编译成功后在rocketmq-console/target目录下执行rocketmq-console-ng-1.0.1.jar
启动时,直接动态添加nameserver地址或编辑application.properties添加属性

1
java -jar rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876

启动成功后访问服务器8080端口即可

image-20200218155021928

pom.xml依赖

1
2
3
4
5
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.6.1</version>
</dependency>

安装启动常见错误

编译时包无法在mirror上找到 提示502错误

原因:网络不好或maven仓库服务器出错
重试即可,或者欢迎镜像仓库

发送失败提示connect to null failed

1
2
3
4
5
6
 ./tools.sh org.apache.rocketmq.example.quickstart.Producer
22:49:02.470 [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.
java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to
null failed

原因:不知道nameserver在哪儿
tools脚本中添加

1
export NAMESRV_ADDR=localhost:9876

启动broker失败 Cannot allocate memory

原因:jvm启动初始化内存分配大于物理内存

1
2
3
4
5
6
7
[root@node-113b bin]# ./mqbroker -n localhost:9876
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:
# /usr/local/rocketmq/bin/hs_err_pid1997.log

修改启动脚本中的jvm参数
runbroker.sh broker
runserver.sh nameserver
默认数值给的都很大,改小即可

1
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=100m"

启动broker成功但提示:Failed to obtain the host name

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node-113b bin]# ./mqbroker -n localhost:9876
22:30:42.307 [main] ERROR RocketmqCommon - Failed to obtain the host name
java.net.UnknownHostException: node-113b: node-113b: No address associated with hostname
at java.net.InetAddress.getLocalHost(InetAddress.java:1505) ~[na:1.8.0_181]
at org.apache.rocketmq.common.BrokerConfig.localHostName(BrokerConfig.java:189) [rocketmq-common-4.6
.1.jar:4.6.1] at org.apache.rocketmq.common.BrokerConfig.<init>(BrokerConfig.java:38) [rocketmq-common-4.6.1.jar:4
.6.1] at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:110) [rocketmq
-broker-4.6.1.jar:4.6.1] at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.6.1.jar:4
.6.1]Caused by: java.net.UnknownHostException: node-113b: No address associated with hostname
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_181]
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[na:1.8.0_181]
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[na:1.8.0_181]
at java.net.InetAddress.getLocalHost(InetAddress.java:1500) ~[na:1.8.0_181]
... 4 common frames omitted
The broker[DEFAULT_BROKER, 192.168.150.213:10911] boot success. serializeType=JSON and name server is localh
ost:9876

原因:无法解析当前的主机名
hosts里添加映射即可

1
192.168.150.213 node-113b

linux日期校准

安装ntpdate

1
2
yum install ntpdate
ntpdate ntp1.aliyun.com

10-RocketMQ安装
https://x-leonidas.github.io/2022/02/01/11技术栈/MQ/10-RocketMQ安装/
作者
听风
发布于
2022年2月1日
更新于
2022年5月5日
许可协议