官网参照
前置环境搭建
目录创建
创建两个目录 logs和store,用于存放日志和数据信息,位置随意,这里我放在/home/rockermq目录下
broker.conf
创建一个空文件broker.conf
在空文件中添加
# broker 对外提供服务的ip,如果是公网,则公网ip,如果本地测试,则本地机ip
brokerIP1 = 172.0.0.1
# Broker 的名称
brokerName = broker-a
# 在集群中对 Broker 的唯一标识。值 0 通常表示这是一个主 Broker
brokerId = 0
# 指定什么时候删除旧的提交日志。值 04 表示在每天的凌晨 4 点删除旧日志
deleteWhen = 04
# 指定提交日志文件的保留时间(以小时为单位)。这里的 48 意味着提交日志会保留 48 小时,然后才会被删除
fileReservedTime = 48
# 定义 Broker 在集群中的角色。ASYNC_MASTER 表示该 Broker 作为主 Broker,并会将消息异步复制到从 Broker
brokerRole = ASYNC_MASTER
# 定义提交日志的刷新模式。ASYNC_FLUSH 表示数据会异步刷新到磁盘,以提高性能。
flushDiskType = ASYNC_FLUSH
# 如果设置为 true,则启用消息属性过滤。这允许你除了通过主题和标签过滤消息外,还可以通过消息的属性进行过滤
enablePropertyFilter=true
编写compose文件
services:namesrv:image: rocketmqinc/rocketmqcontainer_name: rmqnamesrvports:- "9876:9876"volumes:- /home/learning-java/rocketmq/data/logs:/opt/rocketmq/logs- /home/learning-java/rocketmq/data/store:/opt/rocketmq/storecommand: sh mqnamesrvenvironment:- JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn128mnetworks:rmq:aliases:- rmqnamesrvbroker:image: rocketmqinc/rocketmqcontainer_name: rmqbrokerports:- "10911:10911"- "10909:10909"volumes:- /home/learning-java/rocketmq/broker.conf:/opt/rocketmq/broker.confenvironment:- NAMESRV_ADDR=rmqnamesrv:9876- JAVA_OPTS=-Duser.home=/home/rocketmq- JAVA_OPT_EXT=-server -Xms521m -Xmx521m -Xmn128m- BROKER_MEM=521mcommand: sh mqbroker -c /opt/rocketmq/broker.confdepends_on:- namesrvnetworks:rmq:aliases:- rmqbrokerrmqconsole:image: styletang/rocketmq-console-ng:1.0.0container_name: rmqconsole_cpprivileged: trueports:- 9002:8080environment:JAVA_OPTS: "-Xms128m -Xmx128m -Xmn64m -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"depends_on:- namesrv- brokernetworks:rmq:aliases:- rmqconsole
networks:rmq:name: rmqdriver: bridge
启动运行ok
访问图形化界面ok
问题注意
如果控制台界面的cluster里没有broker信息
说明broker没有注册到nameserver上,去看容器broker的日志,
要么容器没有启动成功,
要么容器配置的nameserver错误,
或者docker网络配置错误,导致broker和nameserver没在同一个网络环境下
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <127.0.0.1:10911> failed
当图形化界面报错如上,
可能是图形化界面没有连接上nameserver
或者是broker的ip配置错误,官网上的broker.conf 中brokerIP1=127.0.0.1并不是所有地方正确
如果是本地测试,则是部署机的ip地址,如果是服务器,这是服务器的公网ip