使用docker搭建RocketMQ(非集群搭建官方镜像)

news/2025/3/28 16:15:55/

之前在使用 RocketMQ 官方的包在搭建的时候,发现好多问题,什么修改内存大小,然后启动 broker 报错,类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下,感觉这样子玩坏了,可以直接把容器干掉,重新启动一个新的容器,毕竟是在学习阶段,这样子快好多。

废话不多说,现在开始搭建。

具体搭建流程

前提说明,由于之前使用非 docker 搭建的时候会出现各种内存不足的情况(因为那个虚拟机上面还搭建了其他好多东西),所以这次我是新创建了一个虚拟机,专门用来搭建 RocketMQ。
虚拟机

第一步:下载官方镜像

可以去官网看下最新的镜像 apache/rocketmq Tags | Docker Hub, 我这里使用的是最新的。

docker pull apache/rocketmq

apace rocketmq

第二步:部署 NameServer

创建挂载文件夹

# 日志目录
mkdir /apps/rocketmq/nameserver/logs -p
# 保存路劲
mkdir /apps/rocketmq/nameserver/store -p

设置权限

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/nameserver/*

启动 namesrv 容器

docker run -d \
--privileged=true \
--name rmqnamesrv \
-p 9876:9876 \
-v /apps/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /apps/rocketmq/nameserver/store:/root/store \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq sh mqnamesrv

第三步:部署 broker

创建挂载文件夹

# 创建需要的挂载目录
mkdir /apps/rocketmq/broker/logs -p \
mkdir /apps/rocketmq/broker/data -p \
mkdir /apps/rocketmq/broker/store -p \
mkdir /apps/rocketmq/broker/conf -p

设置权限

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/broker/*

创建 broker.conf

vi /apps/rocketmq/broker/conf/broker.conf

添加以下配置信息到 broker.conf,这里不对参数做过多的说明,在下面Broker配置详解中有对Broker常用参数做详细介绍:
下面需要修改对应的 brokerIP1 地址!!!

# 集群名称
brokerClusterName=DefaultCluster
# 节点名称
brokerName=broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId=0
# Broker服务地址    String    内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1=192.168.148.129
# Broker角色
brokerRole=ASYNC_MASTER
# 刷盘方式
flushDiskType=ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen=04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime=72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95

启动 broker

docker run -d \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /apps/rocketmq/broker/logs:/root/logs \
-v /apps/rocketmq/broker/store:/root/store \
-v /apps/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-e "MAX_POSSIBLE_HEAP=200000000" \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
-e "NAMESRV_ADDR=namesrv:9876" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/broker.conf

最后一行参数说明

  • sh mqbroker -c /home/rocketmq/broker.conf 启动 broker 服务 使用自定义配置文件。

到此,RocketMQ 就算搭建完了,下面我们来打个搭建一个监控看看。

第四步:搭建监控

下载镜像

docker pull apacherocketmq/rocketmq-dashboard:latest

启动容器

这里地址是我们上面对应的 nameserver 所在机器的 IP

docker run -p 8087:8080 --name rocketmq-console -d \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.148.129:9876" \
-t apacherocketmq/rocketmq-dashboard

最后搞完的截图
在这里插入图片描述


http://www.ppmy.cn/news/55772.html

相关文章

LeetCode第160题——相交链表(Java)

题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交**:** 题目数据 保证 整个链式结构中不存在环。 注意&…

Python 3 实现给定的DNA 序列转换为其蛋白质等价物

相关Python源码和数据集下载:https://download.csdn.net/download/tianqiquan/87738198 DNA ⇒ RNA ⇒ 蛋白质 生命取决于细胞存储、检索和翻译遗传指令的能力。这些指令是制造和维持活生物体所必需的。很长一段时间,都不清楚哪些分子能够复制和传递遗传信息。我们现在知道…

【Auto-GPT云部署】

部署自己的Auto-Gpt 先说说什么是Chat-Gpt Chat-GPT (Generative Pretrained Transformer)是由OpenAI提出的一种自然语言处理技术,是基于Transformers和预训练机制的大规模语言模型。与传统的基于规则或基于统计的自然语言处理方法不同,Chat-GPT使用深…

Linux下的常用命令

ls 列出目前工作目录所含之文件及子目录mkdir -p 创建多级文件夹,例如: test01/test02/test03 mkdir -p test01/test02/test03top 查看运行的所有进程 top之后按c 可以查看具体的位置, 按1,可以查看cupps aux --sort rss 按照正序…

Java入门教程||Java 封装||Java 接口

Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码…

2023有潜力的新药都有哪些?新药筛选方法总结

2023有潜力的新药都有哪些?这是一道蕴含无限可能性和未知挑战的问题。新药研发是制药公司不断追求的目标,每一次成功都可以带来巨额利润,改善患者生命质量,成就公司声誉。但与此同时,新药研发风险也是极大的&#xff0…

ESP8266使用SDK软硬件定时执行函数

1、软件定时 以下接口使用的定时器由软件实现,定时器的函数在任务中被执行。因为任务可能被中断,或者被其他高优先级的任务延迟,因此以下os_timer系列的接口并不能保证定时器精确执行。 注意: ①对于同一个 timer,os…

SpaceX的星舰爆炸了:产品开发,快速失败真的很重要

目录 前言 快速失败 产品生命周期 专栏上线 前言 看到很多人都在聊星舰,今天就来简单谈谈“炸星舰”带给我们的启示。 在美国中部时间20日,SpaceX公司的“星舰”超重型火箭进行了首次轨道飞行。 但在该火箭成功点火升空几分钟后,却在半…