¿Cuál es la diferencia clave entre Kafka y una cola tradicional como RabbitMQ?
Opciones
- Kafka no puede conservar los mensajes tras entregarlos
- Kafka es un log duradero; los consumidores releen por offset (Opción correcta)
- RabbitMQ solo se usa para el logging de aplicaciones
- No hay diferencia entre los dos sistemas
Respuesta
Kafka es un log duradero y particionado; los consumidores llevan su offset y pueden releer, y muchos grupos de consumidores leen el mismo stream
Por qué
RabbitMQ: un mensaje espera en una cola hasta que un consumidor lo toma y lo confirma; entonces desaparece. Ideal para repartir tareas entre workers.
Kafka: los mensajes se añaden a un log que se conserva durante días. Cada consumidor recuerda su posición (offset), así que puede releer mensajes antiguos, y muchos servicios distintos pueden leer el mismo stream por separado.
Kafka encaja con streams de eventos de gran volumen; el orden solo se garantiza dentro de una partición.
Recuerda
RabbitMQ = cola de tareas. Kafka = log de eventos que se puede releer.