Sobes.tech
Junior — Middle

¿Cómo se puede determinar el hecho de que un mensaje ha sido leído en Kafka?

sobes.tech AI

Respuesta de la IA

En Kafka, el hecho de que un mensaje haya sido leído se determina mediante desplazamientos (offsets) en las particiones del tema. Cada consumidor (consumer) realiza un seguimiento de hasta qué desplazamiento ha leído en cada partición.

Para determinar que un mensaje ha sido leído, es necesario:

  • Asegurarse de que el consumidor haya procesado con éxito el mensaje.
  • Confirmar (commit) el desplazamiento de ese mensaje en Kafka, es decir, informar al broker que todos los mensajes hasta ese desplazamiento han sido procesados.

En Go, usando un cliente Kafka (por ejemplo, sarama o confluent-kafka-go), se pueden confirmar explícitamente los desplazamientos después de procesar los mensajes. Si el desplazamiento está confirmado, se considera que el mensaje ha sido leído y no será entregado nuevamente a este consumidor.

Ejemplo con sarama (simplificado):

consumer.MarkMessage(msg, "") // Marcar el mensaje como leído
consumer.CommitOffsets()       // Confirmar los desplazamientos

De esta manera, el hecho de que un mensaje haya sido leído es un commit exitoso del desplazamiento en Kafka.