当前位置: 首页 > article >正文

Docker compose部署RocketMQ(单机版)

 整个工具的代码都在Gitee或者Github地址内

gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb

github:GitHub - ZeroNing/solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb

1.新增data文件夹

2.新增logs文件夹

然后在里面新建两个文件夹broker跟nameserver

3.新增conf文件夹

4.在conf文件夹新增broker.conf文件

然后broker.conf默认的官方配置在以下地址
https://github.com/apache/rocketmq/blob/master/distribution/conf/broker.conf

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

#用于集群中的 Broker 识别和管理,多个 Broker 可以属于同一个集群。
brokerClusterName = DefaultCluster
#在一个集群中标识 Broker,不同的 Broker 必须有不同的 brokerName。
brokerName = broker-a
#用于标识 Broker 的角色,0 通常表示主节点(Master),大于 0 的值用于备用节点(Slave)。
brokerId = 0
#设定在每天的凌晨 4 点(04 表示 4 AM)执行过期文件删除操作。
deleteWhen = 04
#指定消息存储文件的保留时间,超过这个时间的文件将被删除以释放存储空间。
fileReservedTime = 48
#ASYNC_MASTER 表示这个 Broker 是异步主节点,在异步复制模式下工作;它会在不等待从节点(Slave)确认的情况下继续处理新消息。
brokerRole = ASYNC_MASTER
#ASYNC_FLUSH 表示异步刷盘,即消息被写入内存后返回 ack,稍后再写入磁盘。这种方式提升性能,但可能在机器故障时丢失数据。
flushDiskType = ASYNC_FLUSH

5.新增docker compose文件

version: '3'  # Docker Compose 文件格式版本

services:
  rmqnamesrv:
    image: apache/rocketmq:latest  # 使用 RocketMQ 最新版本的镜像
    container_name: rmqnamesrv     # 指定容器的名称为 rmqnamesrv
    ports:
      - 9876:9876  # 将主机的 9876 端口映射到容器内的 9876 端口,供外部访问 NameServer
    restart: always  # 如果容器崩溃或重新启动 Docker 服务,则自动重启容器
    privileged: true  # 以特权模式运行容器,通常用于需要访问宿主机设备的场景
    volumes:
      - ./logs/nameserver:/home/rocketmq/logs  # 将主机上的日志目录挂载到容器内
      - /etc/localtime:/etc/localtime  # 将宿主机的时间设置挂载到容器,以同步时间
    environment:
      - MAX_HEAP_SIZE=256M  # 设置 Java 虚拟机最大堆内存为 256MB
      - HEAP_NEWSIZE=128M   # 设置 Java 的新生代内存大小为 128MB
    command: ["sh","mqnamesrv"]  # 启动容器时执行的命令,用于启动 NameServer

  broker:
    image: apache/rocketmq:latest  # 使用 RocketMQ 最新版本的镜像
    container_name: rmqbroker      # 指定容器的名称为 rmqbroker
    ports:
      - 10909:10909  # 将主机的 10909 端口映射到容器内的 10909 端口,供外部访问
      - 10911:10911  # 将主机的 10911 端口映射到容器内的 10911 端口,供外部访问
    restart: always  # 如果容器崩溃或重新启动 Docker 服务,则自动重启容器
    privileged: true  # 以特权模式运行容器
    volumes:
      - ./logs/broker:/root/logs  # 将主机上的日志目录挂载到容器内
      - ./data:/root/store  # 将主机上的数据目录挂载到容器内
      - ./conf/broker.conf:/home/rocketmq/broker.conf  # 挂载自定义的 Broker 配置文件
      - /etc/localtime:/etc/localtime  # 将宿主机的时间设置挂载到容器,以同步时间
    depends_on:
      - 'rmqnamesrv'  # 确保在启动 broker 之前,NameServer 已经启动
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876  # 设置 NameServer 的地址,以便 Broker 能够连接到 NameServer
      - MAX_HEAP_SIZE=512M  # 设置 Java 虚拟机最大堆内存为 512MB
      - HEAP_NEWSIZE=256M   # 设置 Java 的新生代内存大小为 256MB
    command: ["sh","mqbroker","-c","/home/rocketmq/broker.conf"]  # 启动 Broker 时使用自定义配置文件

  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:latest  # 使用 RocketMQ Dashboard 最新版本的镜像
    container_name: rocketmq-dashboard  # 指定容器的名称为 rocketmq-dashboard
    ports:
      - 8080:8080  # 将主机的 8080 端口映射到容器内的 8080 端口,供外部访问 Dashboard
    restart: always  # 如果容器崩溃或重新启动 Docker 服务,则自动重启容器
    privileged: true  # 以特权模式运行容器
    depends_on:
      - 'rmqnamesrv'  # 确保在启动 Dashboard 之前,NameServer 已经启动
    environment:
      - JAVA_OPTS= -Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
      # 设置 Java 虚拟机参数,指定 NameServer 地址,并禁用 VIP 通道


http://www.kler.cn/a/398917.html

相关文章:

  • 红外遥控信号解码
  • ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定
  • C++学习-空指针推荐使用nullptr
  • ChromeDriver 官方下载地址_测试自动化浏览器驱动
  • 软件测试 —— 自动化基础
  • MySQL数据库:SQL语言入门 【2】(学习笔记)
  • 解剖了一个Github 5k Star项目
  • Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView
  • C#获取指定文件夹下所有文件的两种方式(使用Directory.GetFiles()和Directory.EnumerateFiles()函数)及其区别
  • 自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展
  • 【黑马点评debug日记】redis登录跳转不成功
  • 操作系统学习笔记-5 传输层
  • Embedding的用法
  • SSDT Hook
  • 小程序-基于java+SpringBoot+Vue的校园失物招领系统设计与实现
  • outlook邮箱关闭垃圾邮件——PowerAutomate自动化任务
  • TCP实现网络通信(多进程与多线程版本)
  • 正则表达式语法详解(python)
  • Area-Composition模型部署指南
  • vue 中使用rem布局
  • Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 优化场景定义
  • AB矩阵秩1乘法,列乘以行
  • AWD脚本编写_1
  • JQuery 基础知识学习(详尽版)2024.11.17
  • 内联函数与普通函数有什么区别?如何定义和使用内联函数?
  • Thinkphp6视图介绍