搭建RocketMQ 单机版

978 阅读3分钟

基于 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 条消息

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/69444a3a6abc46ba889694540738e199~tplv-k3u1fbpfcp-zoom-1.image

执行 ./tools.sh org.apache.rocketmq.example.quickstart.Consumer 命令消费 1000 条消息

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a192bb53db1e47909e8eaa1143db3336~tplv-k3u1fbpfcp-zoom-1.image

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/#/ 如果出现如下界面,说明安装成功了。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aef0a19bdd304b9ab8fd4526413507a5~tplv-k3u1fbpfcp-zoom-1.image

IDEA 运行

使用 Linux 搭建可以不占用本地资源,体验 RocketMQ 的功能,但对于大多数开发来说都想 Debug 下源码看看。这个时候就需要使用 IDEA 启动源码来运行了。

步骤一:从 github.com/apache/rock… 下载源码到本地

git clone <https://github.com/apache/rocketmq.git>

步骤二:使用 IDEA 打开源码并编译

mvn clean compile -U -Dmaven.test.skip=true

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f39d92b89adc408190ea8e467fbe5a71~tplv-k3u1fbpfcp-zoom-1.image

步骤三:创建一个 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。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/31e372604aa64efebaf4428fcfe236bf~tplv-k3u1fbpfcp-zoom-1.image

启动后输出如下日志表示启动成功:

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8a36b2549f6147af8c57434a46be4176~tplv-k3u1fbpfcp-zoom-1.image

步骤五:启动 org.apache.rocketmq.broker.BrokerStartup ,也要设置下 ROCKETMQ_HOM ,不过这里还要设置下 broker.conf 的路径作为参数

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/775e551807784905a382bdb701912dd0~tplv-k3u1fbpfcp-zoom-1.image

启动后输出如下日志表示启动成功:

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4257da128b6457ea941e7de5064681d~tplv-k3u1fbpfcp-zoom-1.image