Offset là số thứ tự của message trong một partition, bắt đầu từ 0.
- Kafka lưu offset của consumer vào một internal topic tên
__consumer_offsets. - Auto commit (
enable.auto.commit=true) sẽ tự động commit offset theo chu kỳauto.commit.interval.ms(mặc định 5000ms), nhưng có thể dẫn đến mất message nếu consumer crash SAU khi auto-commit nhưng TRƯỚC khi xử lý xong message đó, hoặc xử lý trùng nếu consumer crash sau khi xử lý nhưng trước khi auto commit. - Manual commit (
commitSync()hoặccommitAsync()) cho phép kiểm soát chính xác: chỉ commit sau khi xử lý thành công.commitSync()block cho đến khi commit thành công,commitAsync()không block nhưng cần callback để xử lý lỗi. - Trong production, nên dùng manual commit kết hợp với idempotent processing để đảm bảo at-least-once hoặc exactly-once semantics.