RocketMQ Broker Config

properties

1
2
3
4
5
6
# 消费者的组名
apache.rocketmq.consumer.PushConsumer=PushConsumer
# 生产者的组名
apache.rocketmq.producer.producerGroup=Producer
# NameServer地址
apache.rocketmq.namesrvAddr=localhost:9876

配置参数说明

listenPort:broker的服务端口号,作为对producer和consumer使用服务的端口号,默认为10911

haListenPort:主要用于slave同master同步。haService中使用,默认值为listenPort + 1,这个值是在BrokerStartup.java中设置的。

fastListenPort:主要是fastRemotingServer服务使用,默认为:listenPort - 2

cluster

  • Master

brokerIP1:如果是k8s上,则是service地址(必须是IP地址信息,填服务名称无法解析)

brokerName:Master和Slave要一样

  • Slave

brokerIP1:如果是k8s上,则是service地址(必须是IP地址信息,填服务名称无法解析)

brokerName:Master和Slave要一样

brokerIP2:Master的IP地址

  • 替换配置文件变量

将conf目录下所有xml文件中的${user.home}替换成实际路径

消息发送结果

  1. SEND_OK:消息发送成功

  2. FLUSH_DISK_TIMEOUT:消息发送成功,但是服务器刷盘超时,消息已经进入服务器队列,只有此时服务器宕机,消息才会丢失

  3. FLUSH_SLAVE_TIMEOUT:消息发送成功,但是服务器同步到 Slave 时超时,消息已经进入服务器队列,只有此时服务器宕机,消息才会丢失

  4. SLAVE_NOT_AVAILABLE:消息发送成功,但是此时 slave 不可用,消息已经进入服务器队列,只有此时服务器宕机,消息才会丢失

Momery Config

/bin/runbroker.sh

Xms启动时内存,Xmx最大内存,Xmn最小内存

1
2
3
4
5
<<<<<<< HEAD:source/_posts/Server/SpringBoot/RocketMQ/Broker-Config.md
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx2g -Xmn512m"
=======
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
>>>>>>> a19dd7ddf7c5d38cba8ad2cc462d3fd0a0c8a899:source/_posts/Server/MQ/RocketMQ/Broker-Config.md
1
-Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m

Dockerfile

1
2
3
4
5
6
7
8
9
10
FROM openjdk:8u171-jdk
ADD rocketmq-all-4.2.0-bin-release /root/rocketmq

ENV USER_HOME /root/rocketmq
WORKDIR ${USER_HOME}
RUN chmod +x ${USER_HOME}/bin/mqbroker
CMD cd ${USER_HOME}/bin && export JAVA_OPT=" -Duser.home=/opt" && sh mqbroker -c ${USER_HOME}/custom/master.properties

EXPOSE 10909 10911
VOLUME /opt/logs /opt/store

特别注意,如果缺少export JAVA_OPT=” -Duser.home=/opt”,在部署k8s的时候,如果删除Docker再重新部署,会重新初始化磁盘数据,造成Topic等信息丢失