De ce se recomandă setarea pe false în sisteme critice
Când enable.auto.commit=true, clientul Kafka salvează offset-ul la fiecare interval de timp (ex: 5 secunde prin auto.commit.interval.ms), indiferent dacă procesarea mesajelor din bucla aplicației a reușit sau a eșuat. Dacă aplicația suferă un crash în timpul procesării unui lot, offset-ul poate fi deja salvat pe broker, provocând pierderea datelor. Setând această valoare pe false, aplicația decide exact când salvează offset-ul prin commitSync() sau commitAsync().
Exemplu Concret: Procesare cu commit manual garantat
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("comenzi"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
proceseazaComanda(record.value());
}
consumer.commitSync(); // Salvare sigură după finalizarea procesării
}
Întrebări & Exemple de Cod:
enable.auto.commit în Consumatorul KafkaAi o nelămurire despre utilizarea comenzii
enable.auto.commit în Consumatorul Kafkasau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.