Sobes.tech
Junior

Čo je to producent v Apache Kafka?

sobes.tech AI

Odpoveď od AI

Producent v Apache Kafka je klientská aplikácia, ktorá publikuje správy do Kafka brokerov.

Hlavné funkcie:

  1. Odosielanie správ: Prijíma údaje a odosiela ich na určené tému.
  2. Serializácia: Konvertuje údaje správy na bajty pred odoslaním.
  3. Partitioning: Určuje, do ktorej partitiony témy bude správa odoslaná. Predvolene sa používa hash kľúča správy. Ak kľúč chýba, používa sa round-robin alebo sticky partitioning.
  4. Bufferovanie: Správy sú dočasne uložené v bufferi pred odoslaním v dávkach, čím sa zvyšuje priepustnosť.
  5. Spracovanie chýb: Zodpovedá za opakované pokusy pri dočasných zlyhaniach alebo chybách brokera.

Dôležité konfigurácie:

  • bootstrap.servers: Zoznam hostiteľov a portov brokerov pre počiatočné pripojenie.
  • key.serializer: Trieda na serializáciu kľúča správy.
  • value.serializer: Trieda na serializáciu hodnoty správy.
  • acks: Úroveň potvrdenia prijatia správ brokerom (0, 1, all).
  • retries: Počet pokusov o opätovné odoslanie správy.
// Príklad odoslania správy do Kafka pomocou Java Producer API
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Adresa brokera
props.put("acks", "all"); // Vyžadovať potvrdenie od všetkých replík
props.put("retries", 0); // Žiadne opakovania
props.put("linger.ms", 1); // Okamžité odoslanie správ
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializátor kľúča
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializátor hodnoty

Producer<String, String> producer = new KafkaProducer<>(props);
for (int i = 0; i < 100; i++) {
    producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i))); // Odoslanie správy
}

producer.close(); // Zatvorenie producenta