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.