Sobes.tech
Junior — Middle

Чӣ гуна истеъмолкунандаи Kafka сабт мекунад ҷойгиршавии худро дар ҷараёни маълумот?

sobes.tech AI

Ҷавоб аз AI

Дар Apache Kafka, истеъмолкунанда ба маълумоти дархост дар ҷараёни додаҳо бо истифода аз offsets нигоҳ медорад. Offset рақами пайдарпайи паём дар partition-и мавзӯъ аст.

Истисмолкунанда дар вақти муайян, (commit) offsets-и ҳозираро сабт мекунад, то дар ҳолати бозгашт ё хато, аз ҷойи дуруст идома диҳад. Commit метавонад автоматӣ (auto-commit) ё дастӣ бошад.

Дар муштариёни Kafka барои Go (масалан, sarama), offsets одатан дар мавзӯи махсус __consumer_offsets, ки худи Kafka идора мекунад, нигоҳ дошта мешавад. Ин имкон медиҳад, ки чанд истеъмолкунанда дар гурӯҳ ҳамоҳангӣ кунанд ва кафолат диҳанд, ки ҳар паём танҳо як маротиба коркард мешавад.

Масалан, намунаи commit-и дастӣ дар Go бо истифода аз sarama:

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

for msg := range partitionConsumer.Messages() {
    // коркарди паём
    fmt.Println(string(msg.Value))
    // commit offsets
    consumer.MarkOffset(msg, "")
}

Бинобар ин, ҷойгоҳи истеъмолкунанда дар ҷараён, ин аст, offsets-и охирин, ки сабт шудааст ва имкон медиҳад, ки аз ҷойи дуруст идома диҳад.