Formation Apache Kafka : de zéro à la prod

Offsets Kafka : commits et position de lecture — chapitre 6

Comprendre précisément comment Kafka trace la position de lecture, comment commiter correctement et garantir l’absence de pertes ou de doublons.

Réservé aux abonnés

Contexte

Un offset Kafka est la position d’un message dans une partition ; le consommateur le commite pour savoir où reprendre sa lecture. Kafka ne supprime jamais les messages après consommation. Ce qui détermine la progression d’un consommateur, c’est l’offset qu’il a atteint et l’offset qu’il a commité. Un système mal configuré peut créer :

  • des pertes de messages,
  • des doublons dans les traitements,
  • des blocages suite à un rebalance,
  • un lag croissant pouvant saturer les flux.

La maîtrise des offsets est essentielle pour garantir une consommation fiable, idempotente et performante.

Lexique

Offset

Numéro séquentiel d’un message dans une partition Kafka.

Offset commité

Position sauvegardée pour le consumer group dans __consumer_offsets.

Auto-commit

Kafka commite automatiquement l’offset à intervalle régulier.

Manual commit

Le développeur contrôle précisément quand l’offset est confirmé.

Lag

Messages restant à consommer pour être à jour (backlog).

Commandes pratiques

# Consommer un topic en affichant l'offset de chaque message
kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic commandes.ecommerce \
  --group facturation \
  --from-beginning \
  --property print.offset=true
# Visualiser les offsets et le lag d’un consumer group
kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --describe \
  --group facturation
# Réinitialiser les offsets au début (réparation / rejeu) : groupe arrêté obligatoire
kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --group facturation \
  --reset-offsets \
  --to-earliest \
  --all-topics \
  --execute

La suite de cette leçon est réservée aux abonnés

Les 3 premières leçons de chaque formation sont gratuites. Débloquez la suite pour continuer.