一、三種消息傳遞語義(Message Delivery Semantics):核心是“消息被消費處理的次數”
Kafka的三種傳遞語義本質上描述的是“一條消息從生產到最終被消費者處理完成,可能出現的次數”,這由生產者的消息寫入可靠性和消費者的offset提交策略共同決定。
1. At most once(最多一次)
- 定義:消息可能丟失,但絕不會被重復處理。
- 觸發場景:消費者先提交offset,再處理消息。
- 流程:消費者讀取消息 → 立即提交offset(標記為“已消費”) → 開始處理消息。
- 風險:如果提交offset后、處理消息前消費者宕機,消息實際未處理,但offset已提交,后續不會再消費這條消息,導致消息丟失。
- 適用場景:對數據丟失不敏感,但嚴格不允許重復的場景(如日志采集,丟失幾條影響不大,重復則可能導致統計不準&