Open-Source Wikis

/

Apache Kafka

/

Reference

/

Configuration

apache/kafka

Configuration

Kafka has a lot of configuration options. They are not enumerated here — the source files below are the authoritative list — instead, this page is a map showing where every option lives, what governs validation, and how to find the canonical default.

How configurations are declared

Every config-bearing component has a *Config class that wires options through org.apache.kafka.common.config.ConfigDef (clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java). A ConfigDef.define(...) call records a name, type, default value, validator, importance, and description. AbstractConfig (clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java) then takes a raw Map<String,Object> of user-supplied properties and produces a typed config object.

Adding, removing, or renaming a configuration option requires a KIP. The description string declared in ConfigDef is what becomes the user-facing documentation entry — it must be complete and accurate.

Where to find each config class

Broker / controller

Class File
KafkaConfig (the top-level broker config; aggregates the rest) core/src/main/scala/kafka/server/KafkaConfig.scala
ServerConfigs server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java
KRaftConfigs server-common/src/main/java/org/apache/kafka/server/config/KRaftConfigs.java (and raft/src/main/java/org/apache/kafka/raft/KRaftConfigs.java for some Raft-specific knobs)
ReplicationConfigs server-common/src/main/java/org/apache/kafka/server/config/ReplicationConfigs.java
ServerLogConfigs server-common/src/main/java/org/apache/kafka/server/config/ServerLogConfigs.java
QuotaConfigs server-common/src/main/java/org/apache/kafka/server/config/QuotaConfigs.java
DelegationTokenManagerConfigs server-common/src/main/java/org/apache/kafka/server/config/DelegationTokenManagerConfigs.java
MetadataLogConfig / QuorumConfig raft/src/main/java/org/apache/kafka/raft/MetadataLogConfig.java, QuorumConfig.java

Per-topic

Class File
LogConfig storage/src/main/java/org/apache/kafka/storage/internals/log/LogConfig.java
TopicConfig clients/src/main/java/org/apache/kafka/common/config/TopicConfig.java (the user-facing names)

LogConfig takes the broker defaults from ServerLogConfigs and overlays per-topic overrides supplied via kafka-configs.sh --topic.

Clients

Class File
ProducerConfig clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.java
ConsumerConfig clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerConfig.java
ShareConsumerConfig clients/src/main/java/org/apache/kafka/clients/consumer/ShareConsumerConfig.java
AdminClientConfig clients/src/main/java/org/apache/kafka/clients/admin/AdminClientConfig.java
CommonClientConfigs clients/src/main/java/org/apache/kafka/clients/CommonClientConfigs.java

Streams

Class File
StreamsConfig streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java
TopologyConfig streams/src/main/java/org/apache/kafka/streams/TopologyConfig.java

StreamsConfig embeds the producer / consumer / admin / restore-consumer / global-consumer configs via key prefixes (producer.*, consumer.*, admin.*, main.consumer.*, restore.consumer.*, global.consumer.*).

Connect

Class File
WorkerConfig connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfig.java
DistributedConfig connect/runtime/.../runtime/distributed/DistributedConfig.java
StandaloneConfig connect/runtime/.../runtime/standalone/StandaloneConfig.java
ConnectorConfig / SourceConnectorConfig / SinkConnectorConfig connect/runtime/.../runtime/

Sample configuration files

config/ holds runnable starters:

  • config/server.properties — combined-mode broker+controller for development.
  • config/broker.properties — broker role.
  • config/controller.properties — controller role.
  • config/producer.properties, config/consumer.properties — example client configs.
  • config/connect-distributed.properties, config/connect-standalone.properties, config/connect-mirror-maker.properties — Connect.
  • config/log4j2.yaml, config/tools-log4j2.yaml, config/connect-log4j2.yaml — Log4j 2 configs.

These files are also used by quickstart docs.

Dynamic broker configs

Most broker configs can be changed at runtime via kafka-configs.sh --entity-type brokers --alter. The plumbing is:

  • Definitions of which configs are dynamic — core/src/main/scala/kafka/server/DynamicBrokerConfig.scala (DynamicBrokerConfig.AllDynamicConfigs).
  • Reconfigurable components implement org.apache.kafka.common.Reconfigurable and register with DynamicBrokerConfig.
  • Updates flow through BrokerConfig records on the metadata log; BrokerMetadataPublisher notifies the config manager.

Per-cluster (default-broker) and per-broker overrides are layered: per-broker wins, then cluster-wide, then the static server.properties.

Per-topic configs

Topic-level overrides are stored as ConfigRecords in the metadata log keyed on (topic, name). They are applied on top of the broker default (ServerLogConfigs). Set via kafka-configs.sh --topic <name> --alter --add-config '<key>=<value>,...'.

Configuration providers (KIP-297)

org.apache.kafka.common.config.provider.ConfigProvider lets external sources (Vault, SSM, files, …) supply config values via ${provider:key} syntax. Implementations live in clients/src/main/java/org/apache/kafka/common/config/provider/. Wired in via config.providers=....

Validation

ConfigDef.Validator instances enforce ranges, allowed values, regex constraints, etc. on parse. Cross-config dependencies (e.g., enable.idempotence=true requires acks=all) are checked in component-specific validate* methods invoked by KafkaConfig / ProducerConfig / etc. — search for Util.checkArgument and validateValues in the *Config classes.

How docs are generated

The user-facing config docs (docs/configuration.html and per-component HTML) are generated at build time from the same ConfigDef data, ensuring the documentation stays in sync with the code. The generators live under docs/.

Tips

  • Don't read defaults from config/server.properties — read them from the *Config class. The properties file is just a sample.
  • Don't rely on undocumented options. If an option isn't defined in a ConfigDef, it is silently ignored.
  • Use kafka-configs.sh --describe --all --entity-type brokers --entity-default to see what is actually in effect on a running cluster.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Configuration – Apache Kafka wiki | Factory