KafkaConsumer este o componentă esențială în ecosistemul Apache Kafka. Abonarea la topicuri, bucla de interogare (poll loop) și gestionarea manuală a confirmării procesării (commitSync/commitAsync).
Sintaxă și Utilizare Practică
Exemplu practic documentat pas cu pas:
import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "procesator-facturi");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
// Dezactivare commit automat pentru control exact al livrării cel puțin o dată (at-least-once)
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
KafkaConsumer consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("comenzi-clienti"));
try {
while (true) {
ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord record : records) {
System.out.printf("Primit: cheie=%s, valoare=%s, offset=%d%n",
record.key(), record.value(), record.offset());
}
// Confirmare manuală sincronă după succesul procesării
consumer.commitSync();
}
} finally {
consumer.close();
}
Bune Practici în Producție
- Performanță și Resurse: Optimizați parametrii de alocare de resurse și respectați cerințele de I/O și memorie.
- Fiabilitate: Asigurați monitorizarea proactivă a metricilor cheie și configurați mecanisme sigure de persistență.
- Scalabilitate: Proiectați partiționarea și clusterele luând în calcul creșterea volumului de trafic.
Întrebări & Exemple de Cod:
KafkaConsumerAi o nelămurire despre utilizarea comenzii
KafkaConsumersau 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.