Offset - позиция потребителя в партиции. После обработки сообщения consumer коммитит offset (в Kafka или в группе). При перезапуске чтение продолжается с закоммиченного offset. В Go: автоматический коммит по таймауту или ручной после успешной обработки (CommitMessages). At-least-once: коммит после обработки; при сбое после обработки но до коммита - повторная доставка. Идемпотентность обработки важна.
for {
msg, _ := r.FetchMessage(ctx)
process(msg)
r.CommitMessages(ctx, msg)
}