Sobes.tech
Junior

Ի՞նչ է արտադրողը Apache Kafka-ում։

sobes.tech AI

Պատասխան AI-ից

Apache Kafka-յում պրոդյուսերը հաճախորդի ծրագիր է, որը հաղորդագրություններ է հրապարակում Kafka- ի բրոքերներին:

Հիմնական գործառույթները:

  1. Հաղորդագրությունների ուղարկում: Ստանում է տվյալները և ուղարկում դրանք նշված թեմային:
  2. Սերիալիզացիա: Փոխում է հաղորդագրության տվյալները բայթների:
  3. Բաժանարարում: Կարգավորում է, թե որ բաժանորդին է ուղարկվելու հաղորդագրությունը, հիմնականում օգտագործվում է հաղորդագրության բանալիի հեշը, եթե բանալի չկա, օգտագործվում է round-robin կամ sticky բաժանարար:
  4. Բուֆերավորում: Հաղորդագրությունները ժամանակավոր հավաքվում են բուֆերում՝ նախքան խմբով ուղարկելը, ինչը բարձրացնում է անցանելիությունը:
  5. Համակարգի սխալների մշակումը: Դիտարկում է կրկնակի փորձեր՝ ժամանակավոր սխալների կամ բրոքերի սխալների դեպքում:

Անհրաժեշտ կոնֆիգուրացիաներ:

  • 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(); // Պրոդյուսերի փակումը