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!
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)