---
title: "Kafka configs explained, each one simulated"
description: "Key Apache Kafka producer, consumer and topic settings: what each does, its default, the trade-off, and a simulator scenario that shows it."
url: https://monedula.dev/kafka-simulator/configs/
---

# Kafka configs explained, each one simulated

Each page explains one Apache Kafka setting, its default and its trade-off, then shows it in a Kafka Simulator scenario. Every page is also served as Markdown at the same path with a .md suffix.

## Producer configs

- [Kafka acks: 0 vs 1 vs all explained](https://monedula.dev/kafka-simulator/configs/acks/): Kafka producer acks compared: acks=0, acks=1 and acks=all, what each one waits for, what each can lose, and how min.insync.replicas fits in. Simulated live.
- [Kafka enable.idempotence: no duplicates on retry](https://monedula.dev/kafka-simulator/configs/enable-idempotence/): How the Kafka idempotent producer works: producer ids and sequence numbers drop duplicate retries and keep order. Default true since Kafka 3.0. Simulated live.
- [Kafka max.in.flight.requests.per.connection explained](https://monedula.dev/kafka-simulator/configs/max-in-flight-requests-per-connection/): What max.in.flight.requests.per.connection does in Kafka, why above 1 can reorder retries without idempotence, and why 5 is safe with it. Simulated live.
- [Kafka linger.ms: batching latency vs throughput](https://monedula.dev/kafka-simulator/configs/linger-ms/): What Kafka linger.ms does, its default of 5 ms since Kafka 4.0, and how it works with batch.size to trade latency for throughput. Watch batches form live.
- [Kafka batch.size: how producer batching works](https://monedula.dev/kafka-simulator/configs/batch-size/): What Kafka producer batch.size controls, its 16384-byte default, how it works with linger.ms and compression, and what a larger batch costs. Simulated live.
- [Kafka compression.type: gzip vs snappy vs lz4 vs zstd](https://monedula.dev/kafka-simulator/configs/compression-type/): Kafka compression types compared: none, gzip, snappy, lz4 and zstd, producer vs topic compression.type, and why batching decides the ratio. Simulated live.

## Consumer configs

- [Kafka auto.offset.reset: earliest vs latest](https://monedula.dev/kafka-simulator/configs/auto-offset-reset/): What Kafka auto.offset.reset does, earliest vs latest vs none, when it applies and when it does not, shown step by step in a live simulator.
- [Kafka read_committed vs read_uncommitted (isolation.level)](https://monedula.dev/kafka-simulator/configs/isolation-level/): How Kafka isolation.level works: read_committed waits for transactions and skips aborted records, read_uncommitted returns everything. Step through it live.
- [Kafka session.timeout.ms: detecting dead consumers](https://monedula.dev/kafka-simulator/configs/session-timeout-ms/): What Kafka consumer session.timeout.ms does: how long the group waits for heartbeats before it evicts a member and rebalances, its 45 s default, and tuning.
- [Kafka max.poll.interval.ms: slow processing and rebalances](https://monedula.dev/kafka-simulator/configs/max-poll-interval-ms/): What Kafka max.poll.interval.ms does: the longest a consumer may go between poll() calls before it leaves the group, its 5-minute default, and how to fix it.

## Topic configs

- [Kafka min.insync.replicas explained (with acks=all)](https://monedula.dev/kafka-simulator/configs/min-insync-replicas/): What Kafka min.insync.replicas does: the fewest in-sync replicas an acks=all write needs, why 2 with replication factor 3 is the norm, and NOT_ENOUGH_REPLICAS.
- [Kafka unclean.leader.election.enable: the data loss risk](https://monedula.dev/kafka-simulator/configs/unclean-leader-election-enable/): What unclean.leader.election.enable does in Kafka: availability over durability when no in-sync replica is left, and the committed records it loses.
- [Kafka retention.ms: time-based retention explained](https://monedula.dev/kafka-simulator/configs/retention-ms/): How Kafka retention.ms deletes whole log segments once their newest record is older than the limit, its 7-day default, and what happens to slow consumers.
- [Kafka retention.bytes: size-based retention per partition](https://monedula.dev/kafka-simulator/configs/retention-bytes/): How Kafka retention.bytes deletes the oldest segments once a partition outgrows it, why the limit is per partition, and how it combines with retention.ms.
- [Kafka cleanup.policy: delete vs compact (and both)](https://monedula.dev/kafka-simulator/configs/cleanup-policy/): Kafka cleanup.policy explained: delete removes old segments by time or size, compact keeps the latest value per key, compact,delete does both. Simulated live.
- [Kafka delete.retention.ms: how long tombstones stay](https://monedula.dev/kafka-simulator/configs/delete-retention-ms/): What Kafka delete.retention.ms does on a compacted topic: how long a tombstone survives compaction, its 1-day default, and why consumers must read within it.
