Sobes.tech
Junior

Co je to producent v Apache Kafka?

sobes.tech AI

Odpověď od AI

Producent v Apache Kafka je klientská aplikace, která publikuje zprávy na Kafka brokery.

Hlavní funkce:

  1. Odesílání zpráv: Přijímá data a odesílá je na určené téma.
  2. Serializace: Převádí data zprávy na bajty před odesláním.
  3. Partitioning: Určuje, do které partitiony tématu bude zpráva odeslána. Ve výchozím nastavení se používá hash klíče zprávy. Pokud klíč chybí, používá se round-robin nebo sticky partitioning.
  4. Bufferování: Zprávy jsou dočasně ukládány do bufferu před odesláním v dávkách, což zvyšuje propustnost.
  5. Zpracování chyb: Zajišťuje opakované pokusy při dočasných selháních nebo chybách brokera.

Důležité konfigurace:

  • bootstrap.servers: Seznam hostitelů a portů brokerů pro počáteční připojení.
  • key.serializer: Třída pro serializaci klíče zprávy.
  • value.serializer: Třída pro serializaci hodnoty zprávy.
  • acks: Úroveň potvrzení přijetí zprávami brokery (0, 1, all).
  • retries: Počet pokusů o opětovné odeslání zprávy.
// Příklad odeslání zprávy do Kafka pomocí Java Producer API
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Adresa brokera
props.put("acks", "all"); // Vyžadovat potvrzení od všech replik
props.put("retries", 0); // Žádné opakování
props.put("linger.ms", 1); // Okamžité odeslání zpráv
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializátor klíče
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))); // Odeslání zprávy
}

producer.close(); // Zavření producenta