Docker 搭建 Rocketmq

官网地址:RocketMQ · 官方网站 | RocketMQ

1. 获取镜像

docker pull apache/rocketmq
docker pull apacherocketmq/rocketmq-dashboard

2. 创建文件夹

mkdir -p /opt/docker/rocketmq/logs/srv/a
mkdir -p /opt/docker/rocketmq/logs/srv/b
mkdir -p /opt/docker/rocketmq/logs/broker/a
mkdir -p /opt/docker/rocketmq/logs/broker/b
mkdir -p /opt/docker/rocketmq/data/a.conf
mkdir -p /opt/docker/rocketmq/data/a.conf
mkdir -p /opt/docker/rocketmq/data/console
mkdir -p /opt/docker/rocketmq/store/a
mkdir -p /opt/docker/rocketmq/store/b

3.  编写 brokerconf 文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a|brocker-b
#0表示Master,>0表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.1:9876;192.168.0.2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
#diskMaxUsedSpaceRatio=88
#存储路径
#storePathRootDir=/usr/local/alibaba-rocketmq/store
#commitLog 存储路径
#storePathCommitLog=/usr/local/alibaba-rocketmq/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/usr/local/alibaba-rocketmq/store/consumequeue
#消息索引存储路径
#storePathIndex=/usr/local/alibaba-rocketmq/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/usr/local/alibaba-rocketmq/store/checkpoint
#abort 文件存储路径
#abortFile=/usr/local/alibaba-rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

4. 编写 docker-compose.yml 

version: '3.5'
services:
  rmqnamesrv-a:
    image: apache/rocketmq:latest
    container_name: rmqnamesrv-a
    ports:
      - 9876:9876
    volumes:
      - /opt/docker/rocketmq/logs/srv/a:/home/rocketmq/logs
      - /opt/docker/rocketmq/data/a.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    command: sh mqnamesrv
    networks:
      rmq:
        aliases:
          - rmqnamesrv-a
 
  rmqnamesrv-b:
    image: apache/rocketmq:latest
    container_name: rmqnamesrv-b
    ports:
      - 9877:9876
    volumes:
      - /opt/docker/rocketmq/logs/srv/b:/home/rocketmq/logs
      - /opt/docker/rocketmq/data/b.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    command: sh mqnamesrv
    networks:
      rmq:
        aliases:
          - rmqnamesrv-b
 
  rmqbroker-a:
    image: apache/rocketmq:latest
    container_name: rmqbroker-a
    ports:
      - 10911:10911
    volumes:
      - /opt/docker/rocketmq/logs/broker/a:/home/rocketmq/logs
      - /opt/docker/rocketmq/store/a:/home/rocketmq/store
      - /opt/docker/rocketmq/data/a.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "rmqnamesrv-a:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    links:
      - rmqnamesrv-a:rmqnamesrv-a
      - rmqnamesrv-b:rmqnamesrv-b
    networks:
      rmq:
        aliases:
          - rmqbroker-a
 
  rmqbroker-b:
    image: apache/rocketmq:latest
    container_name: rmqbroker-b
    ports:
      - 10912:10912
    volumes:
      - /opt/docker/rocketmq/logs/broker/b:/home/rocketmq/logs
      - /opt/docker/rocketmq/store/b:/home/rocketmq/store
      - /opt/docker/rocketmq/data/b.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "rmqnamesrv-b:9877"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.2/conf/broker.conf
    links:
      - rmqnamesrv-a:rmqnamesrv-a
      - rmqnamesrv-b:rmqnamesrv-b
    networks:
      rmq:
        aliases:
          - rmqbroker-b

  rmqconsole:
    image: apacherocketmq/rocketmq-dashboard
    container_name: rmqconsole
    ports:
      - 8087:8080
    environment:
      JAVA_OPTS: -Drocketmq.namesrv.addr=rmqnamesrv-a:9876;rmqnamesrv-b:9877 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.accessKey=rocketmq2 -Drocketmq.config.secretKey=12345678
    volumes:
      - /opt/docker/rocketmq/data/console:/tmp/rocketmq-console/data
    networks:
      rmq:
        aliases:
          - rmqconsole

networks:
  rmq:
    name: rmq
    driver: bridge

5. 执行文件

docker-compose up -d

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker搭建RocketMQ,您可以按照以下步骤操作: 1. 首先,确保您已经安装了DockerDocker Compose。 2. 在您的项目目录中创建一个名为`docker-compose.yml`的文件,并将以下内容复制到文件中: ```yaml version: '3' services: namesrv: image: rocketmqinc/rocketmq:4.8.0 container_name: rocketmq-namesrv ports: - 9876:9876 volumes: - ./data/namesrv/logs:/root/logs command: sh mqnamesrv broker: image: rocketmqinc/rocketmq:4.8.0 container_name: rocketmq-broker ports: - 10909:10909 - 10911:10911 environment: - NAMESRV_ADDR=namesrv:9876 volumes: - ./data/broker/logs:/root/logs - ./data/broker/store:/root/store command: sh mqbroker -n namesrv:9876 ``` 3. 创建一个名为`data/namesrv/logs`的文件夹用于存储Namesrv的日志。 4. 创建一个名为`data/broker/logs`和`data/broker/store`的文件夹,用于存储Broker的日志和存储文件。 5. 打开终端,进入到包含`docker-compose.yml`文件的项目目录,并运行以下命令启动RocketMQ: ```bash docker-compose up -d ``` 6. 等待一段时间,RocketMQ将会在Docker容器中启动。您可以使用以下命令查看容器的运行状态: ```bash docker ps ``` 7. 确保Namesrv和Broker容器都处于运行状态后,您可以使用RocketMQ提供的客户端工具进行操作。 这样,您就成功地在Docker搭建RocketMQ。记得在使用完成后,使用以下命令停止并删除容器: ```bash docker-compose down ``` 希望对您有所帮助!如果有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值