Sobes.tech
Junior

Šta je producent u Apache Kafka?

sobes.tech АИ

Одговор од АИ

Proizvođač u Apache Kafka je klijentska aplikacija koja objavljuje poruke u Kafka brokere.

Glavne funkcije:

  1. Slanje poruka: Prima podatke i šalje ih na određenu temu.
  2. Serijalizacija: Pretvara podatke poruke u bajtove pre slanja.
  3. Partitioning: Određuje u koju particiju teme će biti poslata poruka. Podrazumevano se koristi hash ključa poruke. Ako ključ nedostaje, koristi se round-robin ili sticky partitioning.
  4. Buffering: Poruke se privremeno skladište u baferu pre slanja u serije, čime se povećava propusni kapacitet.
  5. Obrada grešaka: Brine o ponovnim pokušajima u slučaju privremenih kvarova ili grešaka brokera.

Važne konfiguracije:

  • bootstrap.servers: Lista hostova i portova brokera za početno povezivanje.
  • key.serializer: Klasa za serijalizaciju ključa poruke.
  • value.serializer: Klasa za serijalizaciju vrednosti poruke.
  • acks: Nivo potvrde primanja poruka od strane brokera (0, 1, all).
  • retries: Broj pokušaja ponovnog slanja poruke.
// Primer slanja poruke u Kafka koristeći Java Producer API
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Adresa brokera
props.put("acks", "all"); // Zahteva potvrdu od svih replika
props.put("retries", 0); // Bez ponovnih pokušaja
props.put("linger.ms", 1); // Odmah slati poruke
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serijalizator ključa
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serijalizator vrednosti

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))); // Slanje poruke
}

producer.close(); // Zatvaranje proizvođača