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:
- Slanje poruka: Prima podatke i šalje ih na određenu temu.
- Serijalizacija: Pretvara podatke poruke u bajtove pre slanja.
- 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.
- Buffering: Poruke se privremeno skladište u baferu pre slanja u serije, čime se povećava propusni kapacitet.
- 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