Kafka વિવિધ ડિલિવરી ગ્યારંટીઓ — at-most-once, at-least-once, અને exactly-once — સપોર્ટ કરે છે જે નક્કી કરે છે કે સંદેશાઓ ખોવાઈ શકે છે કે ડુપ્લિકેટ થઈ શકે છે. આ સમજવું અને તેમને કેવી રીતે પ્રાપ્ત કરવું તે વિશ્વસનીય સિસ્ટમ બનાવવા માટે મહત્વપૂર્ણ છે.
ત્રણ ડિલિવરી સેમેન્ટિક્સ
AT-MOST-ONCE → messages may be LOST but never duplicated:
→ commit offset BEFORE processing → if processing fails, the message is skipped (lost)
→ for: when occasional loss is acceptable and duplicates are not (rare)
AT-LEAST-ONCE → messages are never lost but may be DUPLICATED:
→ commit offset AFTER processing → if a crash occurs before commit, the message is
reprocessed (duplicate) → requires IDEMPOTENT processing
→ the common default; safe (no loss) but handle duplicates
EXACTLY-ONCE → each message is processed exactly once (no loss, no duplicates):
→ the strongest, but hardest; requires Kafka transactions + idempotent producers
