Sobes.tech
Junior — Middle

Ինչպե՞ս կարելի է որոշել, որ հաղորդագրությունը կարդացվել է Kafka-ում։

sobes.tech AI

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

Kafka-ում, հաղորդագրության ընթերցված լինելու փաստը որոշվում է թեմայի բաժանմունքներում (partitions) տեղադրված տեղաշարժերով (offsets): Ամեն մի սպառող (consumer) հետևում է, թե որ տեղաշարժից է ընթերցել յուրաքանչյուր բաժանմունքում:

Որպեսզի որոշեք, որ հաղորդագրությունը ընթերցված է, անհրաժեշտ է՝

  • Համոզվել, որ սպառողը հաջողությամբ մշակել է հաղորդագրությունը:
  • Հաստատել (commit) այդ հաղորդագրության տեղաշարժը Kafka-ում, այսինքն՝ տեղեկացնել բրոքերին, որ մինչև այդ տեղաշարժը բոլոր հաղորդագրությունները մշակվել են:

Go-ում, օգտագործելով Kafka հաճախորդ (օրինակ, sarama կամ confluent-kafka-go), հնարավոր է բացահայտ հաստատել տեղաշարժերը հաղորդագրությունների մշակումից հետո: Եթե տեղաշարժը հաստատված է, այն համարվում է ընթերցված և կրկին չի փոխանցվի այս սպառողին:

Օրինակ sarama-ի հետ (պարզեցված).:

consumer.MarkMessage(msg, "") // Նշել հաղորդագրությունը որպես ընթերցված
consumer.CommitOffsets()       // Հաստատել տեղաշարժերը

Այսպիսով, այն փաստը, որ հաղորդագրությունը ընթերցված է, հանդիսանում է հաջողված տեղաշարժի հաստատում Kafka-ում։