Skip to content

Topic 配置

Topic 级配置是 动态配置:通过标准 Kafka 协议读写,持久化在 meta 层,不需要重启。与 Broker 运行时配置(静态、进程级)不同,它作用于单个 topic。

读写方式

操作Kafka APICLI 示例
查询配置DescribeConfigskafka-configs.sh --describe --entity-type topics --entity-name <topic>
全量修改AlterConfigskafka-configs.sh --alter --entity-type topics --entity-name <topic> --add-config k=v
增量修改IncrementalAlterConfigs同上(新版 kafka-configs.sh 默认走增量)
建表时设定CreateTopics--configkafka-topics.sh --create --topic <topic> --config k=v

建 topic 时通过 --config 传入的键会一并持久化,之后可被 --describe 正确回显。

支持的标准配置键

以下标准 Kafka topic 配置键可被存取并正确回显:

配置键说明
retention.ms消息保留时长
cleanup.policy清理策略(delete / compact)
compression.type压缩类型
max.message.bytes单批消息大小上限
retention.bytes分区保留字节数上限
segment.bytes段大小
其它标准键可存储并回显

现状与限制

当前实现状态

Topic 配置目前的行为是 "可存取、可回显、动态源标记正确",但 多数配置项尚未全部接入引擎行为:

  • 配置写入后能被持久化,DescribeConfigs 会以正确的动态来源标记(dynamic topic config)回显。
  • 但配置值当前不一定改变引擎的实际行为。例如 retention.ms 仅部分应用;cleanup.policy=compactcompression.type 等大多尚未在存储引擎中强制生效。
  • 因此可以把 topic 配置视作"元数据先行":接口与回显已就绪,行为强制生效正在逐步补齐。

配置强制生效已列入 路线图

与 Broker 配置的关系

max.message.bytes 既有 broker 级默认(kafka_runtime.max_message_bytes,见 Broker 配置),也可在 topic 级覆盖。集群级开关(如 auto.create.topics.enable)则属于另一类,见 动态配置机制

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