基于 RocketMQ 4.9.3 版本搭建
Linux 运行
步骤一:通过 wget 命令下载 rocketmq-all-4.9.3 压缩包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
步骤二:通过 unzip 命令解压 rocketmq-all-4.9.3-bin-release.zip
unzip rocketmq-all-4.9.3-bin-release.zip
步骤三:解压后的文件夹名为 rocketmq-4.9.3 ,cd 进入 rocketmq-4.9.3 文件夹中
cd rocketmq-4.9.3
rocketmq-4.9.3 的目录层级为:
├── benchmark 基准测试
├── bin 启动脚本
├── conf RocketMQ配置
├── lib 依赖的jar
├── LICENSE
├── NOTICE
└── README.md
步骤四:修改 bin 目录下的启动脚本的 JVM 参数,默认设置的比较大。如果是个人学习机器内存不一定够用,建议修改小一点,内存足够可忽略。
修改 runserver.sh
cd bin vi runserver.sh # 找到如下代码 JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=1 28m -XX:MaxMetaspaceSize=320m" # 修改 "-Xms -Xmx -Xmn" 参数 -Xms512M -Xmx512M -Xmn256M # :wq 保存并退出
修改 runbroker.sh
cd bin vi runbroker.sh # 找到如下代码 JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g" # 修改为 JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m" # :wq 保存并退出
步骤五:启动 nameserver 和 broker
启动 nameserver
# 执行启动命令
cd bin
nohup ./mqnamesrv &
tail -f ${user_home}/logs/rocketmqlogs/namesrv.log
# 查看到如下日志 说明启动成功
2022-03-08 18:56:33 INFO main - Using JDK SSL provider
2022-03-08 18:56:34 INFO main - SSLContext created for server
2022-03-08 18:56:34 INFO main - Try to start service thread:FileWatchService started:false lastThread:null
2022-03-08 18:56:34 INFO NettyEventExecutor - NettyEventExecutor service started
2022-03-08 18:56:34 INFO main - The Name Server boot success. serializeType=JSON
2022-03-08 18:56:34 INFO FileWatchService - FileWatchService service started
启动 broker
修改 broker.conf 配置如下:
# 命令
cd conf
vi broker.conf
# 配置
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
namesrvAddr=公网ip:9876
brokerIP1=公网ip
autoCreateTopicEnable=false
执行启动命令:
cd bin
nohup ./mqbroker -c ../conf/broker.conf &
tail -f ${user_home}/logs/rocketmqlogs/broker.log
# 查看到如下日志 说明启动成功
2022-03-08 19:13:12 INFO FileWatchService - FileWatchService service started
2022-03-08 19:13:12 INFO PullRequestHoldService - PullRequestHoldService service started
2022-03-08 19:13:12 INFO main - Try to start service thread:TransactionalMessageCheckService started:false lastThread:null
2022-03-08 19:13:12 INFO brokerOutApi_thread_1 - register broker[0]to name server 127.0.0.1:9876 OK
2022-03-08 19:13:12 INFO main - The broker[VM-16-10-centos, 10.0.16.10:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
步骤六:通过 tool.sh 执行 Producer 、Consumer
先将 NAMESRV_ADDR 将入到环境变量
export NAMESRV_ADDR=localhost:9876
执行 ./tools.sh org.apache.rocketmq.example.quickstart.Producer 命令发送 1000 条消息
执行 ./tools.sh org.apache.rocketmq.example.quickstart.Consumer 命令消费 1000 条消息
RocketMQ 控制台安装
RocketMQ 提供了一个控制台,提供对 RocketMQ 的一些运维功能。由于我的服务器上没有maven,所以就不使用源码的方式安装了,我们直接通过 Docker 的方式安装,简单方便。
如果服务器上开启了防火墙,对需要的端口号进行放开,如果使用控制台需要开放三个端口 8080、10909、10911。
# 下载镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
# 运行镜像
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
访问 http://localhost:8080/#/ 如果出现如下界面,说明安装成功了。
IDEA 运行
使用 Linux 搭建可以不占用本地资源,体验 RocketMQ 的功能,但对于大多数开发来说都想 Debug 下源码看看。这个时候就需要使用 IDEA 启动源码来运行了。
步骤一:从 https://github.com/apache/rocketmq 下载源码到本地
git clone https://github.com/apache/rocketmq.git
步骤二:使用 IDEA 打开源码并编译
mvn clean compile -U -Dmaven.test.skip=true
步骤三:创建一个 RocketMQ 的运行目录,用来存放配置文件。在启动 NameServer 和 Broker 的时候需要使用到。
mkdir rocketmq
# 将 distribution/conf 目录下的 logback_namesrv.xml 和 logback_broker.xml 文件复制到创建的 rocketmq 目录下
# 将 distribution/conf 目录下的 broker.conf 复制到 rockermq/conf 目录下
调整 brocker.conf 配置为:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
storePathRootDir=/Users/lixiaoshuang/rocketmq/store
storePathCommitLog=/Users/lixiaoshuang/rocketmq/store/commitlog
namesrvAddr=本机ip:9876
brokerIP1=本机ip
autoCreateTopicEnable=true
步骤四:启动 org.apache.rocketmq.namesrv.NamesrvStartup,首先设置 ROCKETMQ_HOM。
启动后输出如下日志表示启动成功:
步骤五:启动 org.apache.rocketmq.broker.BrokerStartup ,也要设置下 ROCKETMQ_HOM ,不过这里还要设置下 broker.conf 的路径作为参数
启动后输出如下日志表示启动成功: