跳到主要内容
版本:1.0.0(开发版)

Broker 配置参考

Broker 启动时读取强类型配置,统一各配置段之间的字段归属,完成校验后再构造运行时。本页说明规范 TOML 键名及受支持的在线更新范围。可运行的本地集群见本地源码搭建,副本配置见高可用部署。

文件选择与优先级​

  1. -c / --configFile 指定配置文件。未指定时,如果 $ROCKETMQ_HOME/conf/broker.toml 存在则加载该文件,否则使用默认配置。为保证安装可复现,应明确设置 ROCKETMQ_HOME。
  2. --config-format toml|properties 指定输入格式。未指定时,.toml 使用规范 TOML,.conf 和 .properties 使用 Java properties 转换器。扩展名无法确定格式时,需要显式指定。
  3. NameServer 地址的优先级依次为显式 -n / --namesrvAddr、NAMESRV_ADDR、配置文件、默认值 127.0.0.1:9876。环境变量 NAMESRV_ADDR 即使为空,只要存在也会进入覆盖路径并解析为默认地址;若需保留文件中的值,应取消设置该变量。
  4. 配置校验先于服务启动。-p / --printConfigItem 和 -m / --printImportantConfig 打印解析后的配置并退出,不启动监听器。

打印的属性表使用扁平的管理接口名称,用于检查配置,不能原样复制为规范 TOML。Java properties 在内存中转换,同时写出转换报告;应检查报告中被拒绝或转换的字段。--conversion-report 指定报告路径,否则将输入扩展名替换为 .conversion.json。报告写入失败会导致加载失败。

例如,构建 Broker 后,在仓库根目录执行:

$env:ROCKETMQ_HOME = (Get-Location).Path
& .\target\debug\rocketmq-broker-rust.exe -c .\rocketmq-website\examples\first-message\broker.toml -p

规范配置段结构​

[broker]
namesrvAddr = "127.0.0.1:9876"
brokerIp1 = "127.0.0.1"
listenPort = 10911
storePathRootDir = ".rocketmq-reference/broker"
autoCreateTopicEnable = false
autoCreateSubscriptionGroup = false

[broker.brokerIdentity]
brokerClusterName = "DocsCluster"
brokerName = "docs-reference-broker"
brokerId = 0

[broker.topicQueueConfig]
defaultTopicQueueNums = 4

[store]
storePathRootDir = ".rocketmq-reference/store"
brokerRole = "ASYNC_MASTER"
flushDiskType = "ASYNC_FLUSH"
mappedFileSizeCommitLog = 1073741824
mappedFileSizeConsumeQueue = 6000000
fileReservedTime = 72
deleteWhen = "04"

这是本地配置示例,不构成高可用拓扑。相对路径以进程工作目录为基准。broker.storePathRootDir 保存 Broker 元数据,store.storePathRootDir 保存消息存储数据。即使两者都默认指向用户主目录下的 store,它们仍是独立配置项;备份和恢复时应同时保留。

根配置接受 broker、store、logging、旧式 logFilter 和 observability。根配置、Broker 和 store 配置模型均拒绝未知字段。因此,将 Java 风格的 brokerName 放在 TOML 根层级是无效的。主监听端口应通过 broker.listenPort 配置:broker.brokerServerConfig.listenPort 由其派生,不能独立输入。同样,store.enableControllerMode 和 store.duplicationEnable 由 Broker 中的对应字段派生,不接受独立设置。

Broker 身份、路由与请求接纳​

表中路径均相对于 TOML 根层级。默认值指显式覆盖之前的启动配置。除在线更新一节另有说明外,应通过受控重启应用变更。

外部键名类型 / 默认值含义与约束
broker.brokerIdentity.brokerClusterNamestring / DefaultCluster非空集群名称;同一集群的成员使用相同名称。
broker.brokerIdentity.brokerNamestring / 依次取 HOSTNAME、COMPUTERNAME、DEFAULT_BROKER非空 Broker 组名。同组副本共用名称,独立主节点使用不同名称。
broker.brokerIdentity.brokerIdu64 / 0非 Controller 模式下,主节点必须为 0,从节点必须为非零值。Controller 模式遵循其身份分配和纪元规则。
broker.namesrvAddroptional string / 通常为 127.0.0.1:9876以分号分隔的有效端点;受上述 CLI 和环境变量优先级影响。
broker.brokerIp1string / 检测本机地址,失败时回退到环回地址向客户端公布的地址,应确保客户端网络可达。它与绑定地址不同。
broker.listenPortu32 / 10911有效 TCP 端口,且 listenPort - 2 必须是有效快速端口;有效范围为 3..=65535。
broker.storePathRootDirstring / 用户主目录 + store非空元数据根目录。修改此值不会迁移已有元数据。
broker.autoCreateTopicEnablebool / true启用自动创建主题;共享环境中显式创建主题更便于控制。
broker.autoCreateSubscriptionGroupbool / true启用自动创建订阅组。
broker.brokerPermissionu32 / 6读写权限位;在线更新要求至少包含读或写权限位。
broker.topicQueueConfig.defaultTopicQueueNumsu32 / 8创建主题时使用的默认队列数,不会自动调整已有主题的队列划分。
broker.enablePropertyFilterbool / false启用 Broker 端 SQL/属性过滤,仅配置客户端选择器并不足够。
broker.flushConsumerOffsetIntervalu64 / 5000 ms消费偏移量持久化间隔,与客户端提交偏移量的间隔不同。
broker.registerNameServerPeriodu64 / 30000 ms注册周期。不同 NameServer 上的注册可见性可能不同。
broker.registerBrokerTimeoutMillsi32 / 24000 msBroker 注册请求超时,外部键名保留 Mills 拼写。
broker.brokerFastFailurePendingMaxCountusize / 4096待处理请求数量上限,必须为正数。
broker.brokerFastFailurePendingMaxBytesusize / 67108864 bytes待处理请求字节数上限,必须为正数;与单条消息大小限制不同。
broker.enableControllerModebool / false启用基于 Controller 的写入权限管理;要求 broker.controllerAddr 有效且非空。
broker.controllerAddrstring / 空Controller 端点,应使用部署中的 remoting 地址,而不是 Raft 地址。

兼容字段不代表性能能力。例如,asyncSendEnable 为兼容 Java 配置而保留,sendRequestExecutorDetachedEnable 会被忽略并产生启动警告。不能将 Java 线程池参数复制到文件中,再据此推算 Rust 的执行容量。

存储、磁盘与复制​

store 下的外部键名类型 / 默认值单位与运维含义
storeTypeenum / LocalFile存储后端选择;可选后端需要相应构建 feature。修改选择项不等于迁移数据。
storePathRootDirstring / 用户主目录 + store非空消息存储根目录。
storePathCommitLogoptional string / 未设置默认使用存储根目录下的 CommitLog 位置。自定义路径必须纳入备份与恢复。
mappedFileSizeCommitLogusize / 1073741824每个 CommitLog 段的字节数,必须为正数。在已有存储上变更时,应按存储布局操作处理。
mappedFileSizeConsumeQueueusize / 6000000每个 ConsumeQueue 文件的字节数,为 300000 × 20,并非 30 MB。必须为正数。
maxMessageSizei32 / 4194304消息大小限制,单位为字节。客户端与 Broker 限制应协调;批量发送和协议开销还需要单独预留空间。
flushDiskTypeenum / ASYNC_FLUSH可选 ASYNC_FLUSH 或 SYNC_FLUSH。本地刷盘策略不能证明远端复制完成或业务处理完成。
flushIntervalCommitLogi32 / 500周期性尝试刷写 CommitLog 的间隔,单位为毫秒。
flushCommitLogLeastPagesi32 / 4刷盘页数阈值。异步模式拒绝零值。
syncFlushTimeoutu64 / 5000等待同步刷盘条件的毫秒数。超时表示发送结果不确定,不能证明消息不存在。
fileReservedTimeusize / 72保留时长,单位为小时。磁盘压力与清理策略同样影响删除行为。
deleteWhenstring / "04"定时清理小时表达式,在 TOML 中必须加引号。
diskMaxUsedSpaceRatiousize / 75百分比阈值,必须低于强制清理阈值。
diskSpaceCleanForciblyRatiousize / 85百分比阈值,必须低于警告阈值。
diskSpaceWarningLevelRatiousize / 90磁盘警告百分比阈值。运行时还会将磁盘比例限制在支持的范围内。
cleanFileForciblyEnablebool / true允许强制清理;保留小时数本身不能保证最短保留时间。
messageIndexEnablebool / true启用消息索引。运行时修改不承诺重建历史索引。
brokerRoleenum / ASYNC_MASTER可选 ASYNC_MASTER、SYNC_MASTER、SLAVE;应结合 Broker 身份与预期 HA 模式配置。
haListenAddressIP address / 0.0.0.0HA 绑定地址。
haListenPortusize / 10912非零有效 TCP 端口,且不能与主 remoting 端口和快速端口冲突。
totalReplicasusize / 1预期副本数量。
inSyncReplicasi32 / 1同步副本数量配置。
minInSyncReplicasusize / 1最小同步副本数;校验要求 1 <= min <= inSync <= total。
slaveTimeoutusize / 3000单位为毫秒;同步复制或更强副本要求使用该值时,必须为正数。
haMaxTimeSlaveNotCatchupusize / 15000单位为毫秒;Controller 模式或自动 ISR 管理要求其为正数。

默认副本数并不构成复制服务。应使用完整的高可用配置、独立存储根目录、可达的 HA 地址及文档中说明的写入权限模型。DLedger 配置会被拒绝,包括兼容拼写 enableDledgerCommitLog 和 enableDlegerCommitLog;不能通过这些字段间接启用 Controller HA。

在线更新与持久化​

普通 Broker 配置事务仅接受以下六个扁平属性名:

管理接口属性运行时接受的值规范 TOML 路径
autoCreateTopicEnabletrue 或 falsebroker.autoCreateTopicEnable
autoCreateSubscriptionGrouptrue 或 falsebroker.autoCreateSubscriptionGroup
brokerPermission含读写权限的规范整数 2..=7broker.brokerPermission
defaultTopicQueueNums规范整数 1..=128broker.topicQueueConfig.defaultTopicQueueNums
messageIndexEnabletrue 或 falsestore.messageIndexEnable
traceTopicEnabletrue 或 falsebroker.traceTopicEnable

布尔值必须小写;08 等非规范整数会被拒绝。事务会校验候选配置,并移除没有变化的值。索引变更还要求消息存储提供运行时投影;缺少该能力时请求失败,不会仅修改一个无效标志。

成功响应报告 applied=true 和 persisted=false。若需重启后保留设置,必须另行更新部署管理的启动文件。运行时更新后的主题协调过程不会持久化 Broker 配置文件。此范围之外的已知字段需要重启,未知字段不受支持。CAS 请求还会检查正数 expectedGeneration,并在冲突时返回当前 generation。该值标识运行时配置快照,不是存储纪元。

日志过滤器更新使用独立的、受授权约束的路径,不属于上述六字段事务。启动日志配置依次取 CLI、环境输入、logging.filter、旧式 logFilter、回退值。运行时过滤器更新要求启用重载路径,并满足其认证与授权条件。安全材料与遥测配置分别见安全部署和可观测性配置。

变更行为之前先检查配置​

启动前先打印并检查候选文件。应将公布地址、元数据和消息存储根目录、监听与 HA 端口、角色与 ID、副本要求作为整体核对。对于运行中的服务,应区分实际生效的运行时配置和部署工具管理的文件。变更后检查受影响的行为:主题权限对应路由注册,索引设置对应索引查询,持久性设置对应实际发送与复制结果。

配置定义来源包括原始配置模型、校验逻辑、Broker 默认值、存储默认值和运行时事务。本参考列出主要运维字段;定时、压缩及后端专用配置应继续查阅对应配置模型。