RocketMQ安装
服务器部署
# 前提:准备好JDK8环境
# 下载安装包到/home目录
[root@hadoop4 ~]# wget -O /home/rocketmq-all-4.7.1-bin-release.zip https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
# 解压
[root@hadoop4 ~]# unzip rocketmq-all-4.7.1-bin-release.zip
# 修改broker配置文件
[root@hadoop4 ~]# cat rocketmq-all-4.7.1-bin-release/conf/broker.conf
#nameServer地址,分号分割
namesrvAddr=ip:9876
#集群的名称
brokerClusterName = DefaultCluster
#broker 名称,用来区分broker组。
brokerName = broker-a
#同一个组内: 0代表主 非0代表从
brokerId = 0
#删除文件的时间点,默认凌晨4点
deleteWhen = 04
#文件保留时间,默认48小时
fileReservedTime = 48
#broker的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole = ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH异步刷盘
#- SYNC_FLUSH同步刷盘
#同步刷盘,保证数据的稳定性落盘
flushDiskType = ASYNC_FLUSH
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 如果mq服务需要在外网使用则配成外网,需要在内网使用则配成内网地址
brokerIP1=ip
#Broker 对外服务的监听端口
listenPort=10911
#存储路径
storePathRootDir=/home/rocketmq/data/store-a-0
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/store-a-0/commitLog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/store-a-0/consumequeue
#消息索引存储路径
storePathIndex=/home/rocketmq/data/store-a-0/index
#checkPoint 文件存储路径
storeCheckpoint=/home/rocketmq/data/store-a-0/checkPoint
#abort 文件存储路径
abortFile=/home/rocketmq/data/store-a-0/abort
# 修改JVM内存大小(runbroker.sh和runserver.sh)
...
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
...
# 运行NameServer
[root@hadoop4 ~]# nohup sh bin/mqnamesrv &
# 运行broker
[root@hadoop4 ~]# nohup sh bin/mqbroker &
Docker部署
[root@hadoop4 RocketMQ]# cat Dockerfile
FROM aaronst21/centos7_with_jdk8:1.8.0_251
USER root
# 设置环境变量
ENV ROCKETMQ_VERSION=4.7.1
ENV ROCKETMQ_HOME /usr/local/rocketmq-${ROCKETMQ_VERSION}
# 设置临时变量
#ARG user=default
#ARG usergroup=default
# 将解压后的 RocketMQ 包拷贝到 docker 容器中
COPY rocketmq-all-${ROCKETMQ_VERSION}-bin-release ${ROCKETMQ_HOME}
WORKDIR ${ROCKETMQ_HOME}
# 创建用户和组
#RUN groupadd ${usergroup} &&\
# useradd -g ${usergroup} ${user} &&\
# chown -R ${usergroup}:${user} ${ROCKETMQ_HOME} &&\
# chown -R ${usergroup}:${user} ${JAVA_HOME} &&\
# su ${user}
EXPOSE 9876 10909 10911
# 运行server
CMD ./bin/mqnamesrv
# 运行broker
#CMD ./bin/mqbroker
[root@hadoop4 RocketMQ]# docker build -t rocketmq:server .
[root@hadoop4 RocketMQ]# docker build -t rocketmq:broker .
[root@hadoop4 RocketMQ]# docker run -idt --name rocketmq-server -p 9876:9876 rocketmq:server
[root@hadoop4 RocketMQ]# docker run -idt --name rocketmq-broker -p 9877:9876 -v /home/rocketmq/broker.conf:/usr/local/rocketmq-4.7.1/conf/broker.conf -v /home/rocketmq/data:/home/rocketmq/data rocketmq:broker
部署可视化监控工具
# 克隆rocketmq-console-ng代码
git clone https://github.com/StyleTang/rocketmq-console-ng.git
# 可手动修改application.properties配置文件namesrv地址或运行时指定
# 编译打包
mvn clean package -Dmaven.test.skip=true
# 运行
java -jar rocketmq-console-1.0.0-SNAPSHOT.jar --server.port=10086 --rocketmq.config.namesrvAddr='ip:9876' &
# 浏览器访问
http://127.0.0.1:10086
异常
- 错误信息
java.lang.RuntimeException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <null> failed
错误原因
9876、10909、10911、10912端口未放开。
- Broker启动命令出错,未指定使用的配置文件。
解决办法
放开端口。正确启动broker命令如下:
nohup sh bin/mqbroker -c conf/broker.conf &
本文来自博客园,作者:MegaloBox,转载请注明原文链接:https://www.cnblogs.com/cpw6/p/15529752.html