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
