Sobes.tech
Junior

Таврии истеҳсолкунанда дар Apache Kafka чист?

sobes.tech AI

Ҷавоб аз AI

Ҳосилгари Apache Kafka — ин барномаест, ки дар клиентҳо барои нашр кардани паёмҳо ба брокерҳои Kafka истифода мешавад.

Функсияҳои асосӣ:

  1. Ирсол кардани паёмҳо: Датҳоро қабул мекунад ва онҳоро ба мавзӯи муайян ирсол мекунад.
  2. Сериализатсия: Датҳои паёмро пеш аз ирсол ба байтҳо табдил медиҳад.
  3. Партиционирование: Муайян мекунад, ки паём ба кадом партицияи мавзӯъ ирсол мешавад. Ба таври пешфарз, хеши калиди паём истифода мешавад. Агар калид набошад, round-robin ё sticky partitioning истифода мешавад.
  4. Буфергузорӣ: Паёмҳо муваққатан дар буфер нигоҳ дошта мешаванд, пеш аз ирсол ба гурӯҳҳо, ки суръатро зиёд мекунад.
  5. Ҳал кардани хато: Барои кӯшишҳои такрорӣ дар ҳолати норасогии муваққатӣ ё хатоҳои брокер масъул аст.

Конфигуратсияҳои муҳим:

  • bootstrap.servers: Листи серверҳо ва портҳои брокерҳо барои пайвастшавии ибтидоӣ.
  • key.serializer: Класс барои сериализатсияи калиди паём.
  • value.serializer: Класс барои сериализатсияи арзиши паём.
  • acks: Сатҳи тасдиқи қабул аз ҷониби брокерҳо (0, 1, all).
  • retries: Соли кӯшишҳои такрории ирсол.
// Нуқтаи намунаи ирсол кардани паём ба Kafka бо истифода аз API-и Java Producer
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Суроғаи брокер
props.put("acks", "all"); // Талаб кардани тасдиқ аз ҳама репликаҳо
props.put("retries", 0); // Бе кӯшишҳои такрорӣ
props.put("linger.ms", 1); // Ирсол дарҳол
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializator-и калид
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializator-и арзиш

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))); // Ирсол кардани паём
}

producer.close(); // Баста кардани истеҳсолкунанда