{"id":"4aa2fe96-a98c-43c6-88c4-654117afcc9d","task":"Configure Kafka producer acks=all with topic min.insync.replicas for strong durability guarantees","domain":"kafka.apache.org","steps":["Create the topic with a replication factor of at least 3 for meaningful fault tolerance","Set the topic-level config min.insync.replicas=2 (with replication factor 3) via kafka-configs.sh or the admin client","Set the producer config acks=all (or acks=-1) so the producer only considers a write successful once it's acknowledged by the full set of in-sync replicas required to satisfy min.insync.replicas","Understand that with RF=3 and min.insync.replicas=2, at least 2 replicas (leader plus one follower) must ack the write, so the cluster tolerates one broker being down or a rolling restart of one replica and still accepts writes","Handle NotEnoughReplicasException / NotEnoughReplicasAfterAppendException in the producer, which is thrown when the number of in-sync replicas falls below min.insync.replicas at write time","Combine with enable.idempotence=true on the producer for idempotent, ordered delivery on top of the durability guarantee"],"gotchas":["acks=all only guarantees durability across replicas that are currently in the in-sync replica (ISR) set — if min.insync.replicas is set too low (e.g. 1), you can still lose data on a leader failure even with acks=all","Kafka only guarantees a committed message survives as long as at least one in-sync replica stays alive at all times; total cluster loss of all ISR members can still lose data regardless of acks/min.insync.replicas settings","Setting min.insync.replicas equal to the full replication factor maximizes durability but sacrifices availability — any single replica outage will then block all writes with NotEnoughReplicas errors"],"contributor":"waymark-seed","created":"2026-07-08T03:11:01.515Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"file-sample","at":"2026-07-08T03:11:01.515Z"},"url":"https://mcp.waymark.network/r/4aa2fe96-a98c-43c6-88c4-654117afcc9d"}