RocketMQ4.3.X笔记(2):Broker 配置详解

配置参数介绍

基础配置

配置描述默认值例子
namesrvAddrnameServer地址,如果nameserver是多台集群的话,用分号分割namesrvAddr=10.1.219.75:9876;10.1.219.76:9876
brokerClusterName所属集群名字。Cluster 的地址,如果集群机器数比较多,可以分成多个Cluster ,每个Cluster 供一个业务群使用brokerClusterName=rocketmq-cluster
brokerNameBroker 的名称, Master 和Slave 通过使用相同的Broker 名称来表明相互关系,以说明某个Slave 是哪个Master 的SlavebrokerName=broker-a
brokerId一个Master Barker 可以有多个Slave, 0 表示Master ,大于0 表示不同的 Slave 的IDbrokerId=0
fileReservedTime在磁盘上保存消息的时长,单位是小时,自动删除超时的消息fileReservedTime=48
deleteWhen与fileReservedTim巳参数呼应,表明在几点做消息删除动作,默认值04 表示凌晨4 点deleteWhen=04
brokerRolebrokerRole 有3 种: SYNC_MASTER(同步双写) 、ASYNC_MASTER(异步复制) 、SLAVE 。关键词SYNC 和ASYNC 表示Master 和Slave 之间同步消息的机制, SYNC 的意思是当Slave 和Master 消息同步完成后,再返回发送成功的状态brokerRole=SYNC_MASTER
flushDiskTypeflushDiskType 表示刷盘策略,分为SYNC_FLUSH 和ASYNC_FLUSH两种,分别代表同步刷盘和异步刷盘。同步刷盘情况下,消息真正写人磁盘后再返回成功状态;异步刷盘情况下,消息写人page_cache 后就返回成功状态flushDiskType=ASYNC_FLUSH
listenPortBroker 监听的端口号,如果一台机器上启动了多个Broker , 则要设置不同的端口号,避免冲突listenPort=10911
storePathRootDir存储消息以及一些配置信息的根目录storePathRootDir=/app/custom/data/rocketmq/store-a

进阶配置

配置描述默认值例子
autoCreateTopicEnable是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=true
defaultTopicQueueNums在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。defaultTopicQueueNums=4
autoCreateSubscriptionGroup是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateTopicEnable=true
mapedFileSizeCommitLogcommitLog每个文件的大小,默认1G1GmapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueueConsumeQueue每个文件默认存30W条,根据业务情况调整mapedFileSizeConsumeQueue=300000

存储配置

配置描述默认值例子
storePathRootDir存储消息以及一些配置信息的根目录storePathRootDir=/app/custom/data/rocketmq/store-a
storePathCommitLogcommitLog 存储路径storePathCommitLog=/data/rocketmq/store/commitlog
storePathConsumeQueue消费队列存储路径存储路径storePathConsumeQueue=/data/rocketmq/store/consumequeue
storePathIndex消息索引存储路径storePathIndex=/data/rocketmq/store/index
storeCheckpointcheckpoint 文件存储路径storeCheckpoint=/data/rocketmq/store/checkpoint
abortFileabort 文件存储路径abortFile=/data/rocketmq/store/abort

例子

# nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=10.1.219.75:9876;10.1.219.76:9876
# 所属集群名字
brokerClusterName=rocketmq-cluster
# broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-a
# 0 表示 Master,>0 表示 Slave
brokerId=0
# 删除文件时间点,默认凌晨 4点
deleteWhen=04
# 文件保留时间,默认 48 小时
fileReservedTime=48
# Broker 的角色: ASYNC_MASTER 异步复制Master ; SYNC_MASTER 同步双写Master; SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式 ASYNC_FLUSH 异步刷盘; SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# Broker 对外服务的监听端口
listenPort=10911
# 存储路径
storePathRootDir=/app/custom/data/rocketmq/store-a


# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4
# defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# commitLog 存储路径
#storePathCommitLog=/data/rocketmq/store/commitlog
# 消费队列存储路径存储路径
#storePathConsumeQueue=/data/rocketmq/store/consumequeue
# 消息索引存储路径
#storePathIndex=/data/rocketmq/store/index
# checkpoint 文件存储路径
#storeCheckpoint=/data/rocketmq/store/checkpoint
# abort 文件存储路径
#abortFile=/data/rocketmq/store/abort
# 限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

# 发消息线程池数量
#sendMessageThreadPoolNums=128
# 拉消息线程池数量
#pullMessageThreadPoolNums=128

日志文件输出

  1. Log 是监控系统状态, 排查问题的重要手段, RocketMQ 的默认Log 存储位置是:${user.home}/logs/rocketmqlogs/。Log 配置文件的设置可以通过 JVM启动参数、环境变量、代码中的设置语句 这三种方式来配置
  2. RocketMQ 客户端日志相关的代码在 org.apache.rocketmq.Client.Log.ClientLogger 类中,从源码中可以看到所有的配置选项。比如想更改RocketMQ Client 的LogLevel,可以通过-D rocketmq.Client.LogLevel 来设置,或者在程序启动时使用System.setProperty("rocketmq.Client.LogLevelWARN") 来设置。
# 客户端日志属性
public static final String CLIENT_LOG_USESLF4J = "rocketmq.client.logUseSlf4j";
public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
public static final String CLIENT_LOG_MAXINDEX = "rocketmq.client.logFileMaxIndex";
public static final String CLIENT_LOG_FILESIZE = "rocketmq.client.logFileMaxSize";
public static final String CLIENT_LOG_LEVEL = "rocketmq.client.logLevel";
public static final String CLIENT_LOG_ADDITIVE = "rocketmq.client.log.additive";
public static final String CLIENT_LOG_FILENAME = "rocketmq.client.logFileName";
public static final String CLIENT_LOG_ASYNC_QUEUESIZE = "rocketmq.client.logAsyncQueueSize";
public static final String ROCKETMQ_CLIENT_APPENDER_NAME = "RocketmqClientAppender";

# 源码 客户端日志保存路径+名称 ${user.home}/logs/rocketmqlogs/rocketmq_client.log
String clientLogRoot = System.getProperty(CLIENT_LOG_ROOT, System.getProperty("user.home") + "/logs/rocketmqlogs");
String clientLogFileName = System.getProperty(CLIENT_LOG_FILENAME, "rocketmq_client.log");
  1. RocketMQ 的Log 实现是基于slf4j 的,支持Logback 、Log4j 。
  2. RocketMQ Client 里已经有Log back 的相关包,可以直接使用Log back 。我们可以通过 Log back 的配置文件对日志进行细粒度的控制。在使用的时候,首先需要把rocketmq.Client.Log.loadconfig 参数设置为 false,可以在程序中使用 System.setProperty("rocketmq.Client.Log.loadconfig","false") 或者在JVM 启动时使用-D 参数来设置。

参考

  1. Apache RocketMQ 官网
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值