Tranzacții și Procesare Exactly-Once (EOS) în Apache Kafka în Apache Kafka

Ghid complet pentru Exactly-Once Semantics (EOS) în Kafka: coordonatorul de tranzacții, commit atomic între topics cu sendOffsetsToTransaction și proprietatea isolation.level=read_committed.

Sintaxă
producer.initTransactions(); producer.beginTransaction(); producer.commitTransaction();

În aplicațiile financiare, duplicarea sau pierderea mesajelor este inacceptabilă. Kafka oferă suport nativ pentru Exactly-Once Semantics (EOS): producătorul poate scrie atomic în mai multe topicuri și poate salva offset-ul consumatorului în aceeași tranzacție atomizată.

Buclă de procesare tranzacțională (Read-Process-Write)
// 1. Configurarea producătorului tranzacțional:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("transactional.id", "procesator-facturi-id-unic");
props.put("enable.idempotence", "true");

KafkaProducer<String, String> producer = new KafkaProducer<>(props);
producer.initTransactions();

try {
    producer.beginTransaction();

    // 2. Trimite mesajele procesate pe topicul de ieșire:
    producer.send(new ProducerRecord<>("facturi-emise", cheie, facturaJson));

    // 3. Trimite offset-urile consumatorului direct în tranzacție:
    producer.sendOffsetsToTransaction(offsetsDeConfirmat, "grup-facturare-id");

    // 4. Confirmă totul atomic:
    producer.commitTransaction();
} catch (ProducerFencedException | OutOfOrderSequenceException e) {
    producer.close();
} catch (KafkaException e) {
    // În caz de eroare, anulăm tot:
    producer.abortTransaction();
}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Tranzacții și Procesare Exactly-Once (EOS) în Apache Kafka

Ai o nelămurire despre utilizarea comenzii Tranzacții și Procesare Exactly-Once (EOS) în Apache Kafka sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.