Junior
Ի՞նչ է արտադրողը Apache Kafka-ում։
sobes.tech AI
Պատասխան AI-ից
Apache Kafka-յում պրոդյուսերը հաճախորդի ծրագիր է, որը հաղորդագրություններ է հրապարակում Kafka- ի բրոքերներին:
Հիմնական գործառույթները:
- Հաղորդագրությունների ուղարկում: Ստանում է տվյալները և ուղարկում դրանք նշված թեմային:
- Սերիալիզացիա: Փոխում է հաղորդագրության տվյալները բայթների:
- Բաժանարարում: Կարգավորում է, թե որ բաժանորդին է ուղարկվելու հաղորդագրությունը, հիմնականում օգտագործվում է հաղորդագրության բանալիի հեշը, եթե բանալի չկա, օգտագործվում է round-robin կամ sticky բաժանարար:
- Բուֆերավորում: Հաղորդագրությունները ժամանակավոր հավաքվում են բուֆերում՝ նախքան խմբով ուղարկելը, ինչը բարձրացնում է անցանելիությունը:
- Համակարգի սխալների մշակումը: Դիտարկում է կրկնակի փորձեր՝ ժամանակավոր սխալների կամ բրոքերի սխալների դեպքում:
Անհրաժեշտ կոնֆիգուրացիաներ:
bootstrap.servers: Բրոքերների հոստեր և պորտեր՝ սկզբնական կապի համար:key.serializer: Բանալի սերիալիզատորի դասը:value.serializer: Արժեքի սերիալիզատորի դասը:acks: Հաստատման մակարդակը հաղորդագրությունների ստացման համար (0, 1, all):retries: Կրկնակի փորձերի քանակը:
// Օրինակ Kafka- ի հաղորդագրության ուղարկում Java Producer API- ի օգտագործմամբ
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"); // Բանալի սերիալիզատոր
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Արժեքի սերիալիզատոր
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(); // Պրոդյուսերի փակումը