Docker Compose 部署 RocketMQ 5.0

633 阅读2分钟

背景:去官网查看RocketMQ已经升级到5.0版本,想本地部署一套系统,验证一下官网SDK的使用。话不多说,直接上文件。

配置文件

DockerCompose.yml

version: "3.7"
services:
  mqnamesrv:
    image: apache/rocketmq:5.2.0
    container_name: mqnamesrv
    restart: always
    ports:
      - "9876:9876"
    environment:
      - "JAVA_OPTS=-Duser.home/opt"
    command: sh mqnamesrv

  mqbroker:
    image: apache/rocketmq:5.2.0
    container_name: mqbroker
    restart: always
    depends_on:
      - mqnamesrv
    ports:
      - "10909:10909"
      - "10911:10911"
      - "8081:8081"
    volumes:
      - ./conf/broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf
    command: sh mqbroker -n mqnamesrv:9876 --enable-proxy autoCreateTopicEnable=true -c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

  mqconsole:
    image: styletang/rocketmq-console-ng
    container_name: mqconsole
    restart: always
    depends_on:
      - mqnamesrv
      - mqbroker
    ports:
      - "8098:8080"
    environment:
      - "JAVA_OPTS=-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"


networks:
  default:
    external: true
    name: kong-net
  

注意事项:

1、几个容器要部署到一个桥接网络里,上面配置文件用的kong-net,注意不能用docker默认的bridge,bridge网络容器间不能通信

2、broker一定要对外暴露接口8081,否则本地发送消息的时候会一直提示链接失败。(这个问题卡了好久,github上也好多问这个问题的,在一个回答中发现才解决的)

Broker.conf

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master 和 slave 使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示 Master,大于 0 表示不同的 slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示 Master 和 Slave 之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH 表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功
状态,ASYNC_FLUSH 不需要;
flushDiskType = ASYNC_FLUSH
# 设置 broker 节点所在服务器的 ip 地址、物理 ip,不能用127.0.0.1、localhost、docker内网ip,windows下用ipconfig的地址
brokerIP1 = 10.123.123.25
brokerIP2 = 10.123.123.25
namesrvAddr = localhost:9876

注意事项:

1、brokerIP要写本机IP,不能用localhost

部署图示

namesrv

broker

proxy

console

本地发送消息成功图示

附上maven-pom

		<dependency>
			<groupId>org.apache.rocketmq</groupId>
			<artifactId>rocketmq-client-java</artifactId>
			<version>5.0.6</version>
		</dependency>