Skip to content

动态配置机制

除了 topic 级配置(Topic 配置),RobustMQ 还有一类 集群动态配置:作用于整个集群、持久化在 meta 层、可在线热改、跨重启保留。它不写在 config/server.toml 里(那是静态配置)。

工作原理

  1. 通过 admin HTTP 接口写入一段配置,指定 config_type(Kafka 集群开关用 KafkaDynamic)。
  2. 配置被持久化到 meta 层(基于 Raft),保证跨重启保留。
  3. 变更广播到各节点的内存缓存(node_cache),后续请求直接读缓存,无需再查 meta。

auto.create.topics.enable 为例

这是目前 Kafka 集群动态配置中最典型的一项:当客户端请求一个不存在的 topic 时,是否自动创建它

默认值true(与 Kafka broker 默认一致)
是否可热改
持久化meta 层,跨重启保留

判定逻辑

自动创建只有在两个条件同时成立时才发生:

text
客户端请求带 allow_auto_topic_creation = true

集群开关 auto.create.topics.enable = true

即:客户端(如 Metadata 请求)显式允许自动建表,并且集群开关为开。任一为否都不会自动创建。

通过 admin HTTP 设置

bash
curl -X POST http://<admin-host>:<http_port>/api/cluster/config/set \
  -H 'Content-Type: application/json' \
  -d '{
        "config_type": "KafkaDynamic",
        "config": "{\"auto_create_topics_enable\": false}"
      }'
  • config_type 固定为 KafkaDynamic
  • config 是 JSON 字符串(注意转义),字段为 auto_create_topics_enable

默认值一旦被覆盖便不再生效

true 是"未显式设置过"时的兜底默认。一旦通过上述接口手动设过一次值(无论 true 还是 false),该值会被持久化,内置默认逻辑不再参与——之后只以持久化的值为准,直到你再次修改它。

与其它配置的区别

维度Broker 静态配置集群动态配置Topic 配置
作用域单节点进程整个集群单个 topic
存储config/server.tomlmeta 层meta 层
热改否(需重启)
入口文件admin HTTPKafka 协议

相关文档:Broker 配置 · Topic 配置

🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀