Î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();
}
Întrebări & Exemple de Cod:
Tranzacții și Procesare Exactly-Once (EOS) în Apache KafkaAi o nelămurire despre utilizarea comenzii
Tranzacții și Procesare Exactly-Once (EOS) în Apache 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.