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-ում։