搭建RocketMQ 单机版

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通过介绍Linux 和 IDEA 两种方式搭建RocketMQ 单机版,帮助大家快速上手和学习RocketMQ
基于 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://tva1.sinaimg.cn/large/e6c9d24ely1h02phog1jhj22gw0a6gnf.jpg

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

https://tva1.sinaimg.cn/large/e6c9d24ely1h02pj5icrkj22gm08gq4v.jpg

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://tva1.sinaimg.cn/large/e6c9d24ely1h02q126erkj21dv0u0dik.jpg

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

https://tva1.sinaimg.cn/large/e6c9d24ely1h03ubyd92ej211y0nytfk.jpg

步骤三:创建一个 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://tva1.sinaimg.cn/large/e6c9d24ely1h03ugtqh0sj21b00u0n0y.jpg

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

https://tva1.sinaimg.cn/large/e6c9d24ely1h03ui4sp3rj21fa0ao75h.jpg

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

https://tva1.sinaimg.cn/large/e6c9d24ely1h03ul5tu0pj21bk0u0gq0.jpg

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

https://tva1.sinaimg.cn/large/e6c9d24ely1h03undawj9j21mu0b8myt.jpg

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
5月前
|
消息中间件 数据可视化 RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
1318 4
|
消息中间件 Apache RocketMQ
windows环境下消息中间件RocketMq的搭建
windows环境下消息中间件RocketMq的搭建
286 24
windows环境下消息中间件RocketMq的搭建
|
消息中间件 Java Maven
【实战】手把手教你从 0 到 1 搭建一套 RocketMQ 集群
大家好,我是君哥。今天来分享怎样搭建 RocketMQ 集群。
323 1
【实战】手把手教你从 0 到 1 搭建一套 RocketMQ 集群
|
消息中间件 数据可视化 Java
RocketMQ单机版安装
RocketMQ单机版安装
214 0
RocketMQ单机版安装
|
消息中间件 存储 监控
搭建源码调试环境—RocketMQ源码分析(一)
在正式开始搭建调试环境之前,我们先了解一下RockeMQ源码的整体架构。 这是因为掌握了整体架构,可以让我们迅速了解各个方面的特性,并且可以方便我们后续快速定位功能模块对应的代码文件。话不多说,我们开始看RocketMQ目录结构。
327 0
搭建源码调试环境—RocketMQ源码分析(一)
|
消息中间件 RocketMQ
《4.17【RocketMQ Connect 平台的搭建与实践】》电子版地址
4.17【RocketMQ Connect 平台的搭建与实践】
160 0
《4.17【RocketMQ Connect 平台的搭建与实践】》电子版地址
|
消息中间件 存储 JSON
RocketMQ的单机部署
RocketMQ的单机部署
433 0
RocketMQ的单机部署
|
消息中间件 JSON Java
搭建 RocketMQ 集群
纯粹是为了记录搭建的过程。忘了就翻来看看
346 0
搭建 RocketMQ 集群
|
消息中间件 存储 NoSQL
从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!(下)
从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!(下)
从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!(下)
|
消息中间件 存储 监控
第八章:手把手教老婆实现:RocketMQ集群模式(2)-RocketMQ主从-搭建
第八章:手把手教老婆实现:RocketMQ集群模式(2)-RocketMQ主从-搭建
170 0
第八章:手把手教老婆实现:RocketMQ集群模式(2)-RocketMQ主从-搭建