Jsou dvě základní možnosti: buď si to consumer vede sám někde jinde bokem ve své režii (třeba v Redis clusteru :-) ) nebo to svěří Kafce (to pokud se používá hlavně autocommit). Fakticky to ta Kafka teda ukládá do toho zmíněného Zookeeperu, který tam běží jako povinná součást, v tom si Kafla vede svůj stav.
Defaultně je použit ten autocommit režim a navíc, že zpráva se commitne v okamžiku předání aplikaci. A Kafka to v určitých intervalech pak ukládá do offset storu (ten je v tom zookeeperu). Pokud chce aplikace potvrzovat manuálně zpracování s využitím toho offset storu, tak se vypne commit na předaní dat a klient musí volat po zpracování přijaté zprávy rd_kafka_offset_store().