Sobes.tech
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:

  1. Üzenetek küldése: Fogad adatokat, és elküldi azokat a megadott témába.
  2. Szerializálás: Átalakítja az üzenet adatait bájtokká küldés előtt.
  3. 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ó.
  4. Bufferelés: Az üzenetek ideiglenesen bufferben tárolódnak, mielőtt csoportokban küldenék őket, növelve a throughputot.
  5. 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