Sobes.tech
Junior — Middle

Kafka-da istehlakçı məlumat axınında öz mövqeyini necə saxlayır?

sobes.tech Süni İntellekt

AI-dan cavab

Apache Kafka-da istehlakçı məlumat axınında öz mövqeyini ofsetlər (offsets) vasitəsilə saxlayır. Offset — bu, mövzunun partitionındakı mesajın ardıcıllıq nömrəsidir.

İstehlakçı müntəzəm olaraq hazırkı offset-i qeyd edir (commit edir), beləliklə, yenidən başlatma və ya nasazlıq zamanı düzgün yerdən oxumağa davam edə bilər. Commit avtomatik (auto-commit) və ya əl ilə ola bilər.

Go üçün Kafka müştərilərində (məsələn, sarama) offset adətən Kafka tərəfindən idarə olunan __consumer_offsets adlı xüsusi bir mövzuda saxlanılır. Bu, bir qrupdakı bir neçə istehlakçının oxumağı koordine etməsinə və hər mesajın yalnız bir dəfə işlənməsini təmin edir.

Go-da sarama istifadə edərək əl ilə offset commit nümunəsi:

partitionConsumer, _ := consumer.ConsumePartition(topic, partition, sarama.OffsetNewest)

for msg := range partitionConsumer.Messages() {
    // mesajın işlənməsi
    fmt.Println(string(msg.Value))
    // offset-i qeyd et
    consumer.MarkOffset(msg, "")
}

Beləliklə, istehlakçının axın içindəki mövqeyi, Kafka-da saxlanılan və düzgün yerdən oxumağa davam etməyə imkan verən son commit edilmiş offset-dir.