Junior
Mi az a producer az Apache Kafka-ban?
sobes.tech MI
Válasz az MI-től
Az Apache Kafka-ban a producer egy kliensalkalmazás, amely üzeneteket tesz közzé a Kafka brokerekben.
Fő funkciók:
- Üzenetek küldése: Fogad adatokat, és elküldi azokat a megadott témába.
- Szerializálás: Átalakítja az üzenet adatait bájtokká küldés előtt.
- Particionálás: Meghatározza, melyik partícióba kerül az üzenet. Alapértelmezés szerint a kulcs hash értékét használja. Kulcs hiányában round-robin vagy sticky partitioning alkalmazható.
- Bufferelés: Az üzenetek ideiglenesen bufferben tárolódnak, mielőtt csoportokban küldenék őket, növelve a throughputot.
- Hiba kezelése: Felelős az ideiglenes hibák vagy broker hibák esetén az újrapróbálkozásokért.
Fontos konfigurációk:
bootstrap.servers: A brokerek hosztnevei és portjai a kezdeti kapcsolathoz.key.serializer: A kulcs serializálására szolgáló osztály.value.serializer: Az érték serializálására szolgáló osztály.acks: A broker által visszaigazolt üzenetek szintje (0, 1, all).retries: Az újrapróbálkozások száma.
// Példa Kafka üzenet küldésére Java Producer API-val
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Broker címe
props.put("acks", "all"); // Minden replikától megerősítést kér
props.put("retries", 0); // Nincs újrapróbálkozás
props.put("linger.ms", 1); // Azonnali küldés
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Kulcs serializáló
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Érték serializáló
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))); // Üzenet küldése
}
producer.close(); // Producer bezárása