Junior
Таврии истеҳсолкунанда дар Apache Kafka чист?
sobes.tech AI
Ҷавоб аз AI
Ҳосилгари Apache Kafka — ин барномаест, ки дар клиентҳо барои нашр кардани паёмҳо ба брокерҳои Kafka истифода мешавад.
Функсияҳои асосӣ:
- Ирсол кардани паёмҳо: Датҳоро қабул мекунад ва онҳоро ба мавзӯи муайян ирсол мекунад.
- Сериализатсия: Датҳои паёмро пеш аз ирсол ба байтҳо табдил медиҳад.
- Партиционирование: Муайян мекунад, ки паём ба кадом партицияи мавзӯъ ирсол мешавад. Ба таври пешфарз, хеши калиди паём истифода мешавад. Агар калид набошад, round-robin ё sticky partitioning истифода мешавад.
- Буфергузорӣ: Паёмҳо муваққатан дар буфер нигоҳ дошта мешаванд, пеш аз ирсол ба гурӯҳҳо, ки суръатро зиёд мекунад.
- Ҳал кардани хато: Барои кӯшишҳои такрорӣ дар ҳолати норасогии муваққатӣ ё хатоҳои брокер масъул аст.
Конфигуратсияҳои муҳим:
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(); // Баста кардани истеҳсолкунанда