¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de Kafka

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de contenedores8 min de lectura7 comandos

Qué vas a hacer

Kafka guarda los mensajes en un tema (topic), que es un registro: los productores añaden mensajes al final y los consumidores los leen desde el punto que quieran. Un tema se divide en particiones, y cada mensaje recibe un offset, su número dentro de su propia partición, contando desde cero. Aquí vas a crear un tema, añadir tres mensajes y leerlos desde el principio.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección y espera a que diga que está en marcha. Primero arranca el broker (el servidor de Kafka) y después la página, así que el primer arranque tarda más o menos un minuto. Cada botón Ejecutar de abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Crea un tema

Este comando le pide un tema llamado orders con tres particiones a la API web que hay detrás de Kafka UI. Imprime 200, la palabra de la web para «hecho», en una línea aparte: el \n que va detrás de %{http_code} la termina con un salto de línea. Después, el segundo comando enumera las particiones: "partition":0, "partition":1 y "partition":2, cada una con "offsetMax":0. Ese número es el siguiente offset, el que recibirá el próximo mensaje, así que las tres están vacías.

Comando
curl -s -X POST -H "Content-Type: application/json" -d '{"name":"orders","partitions":3,"replicationFactor":1,"configs":{}}' http://kafka-ui:8080/api/clusters/lab/topics -o /dev/null -w "%{http_code}\n"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

2. Produce tres mensajes

Cada comando añade un mensaje e imprime 200. Los dos primeros van a la partición 0 y el tercero a la partición 1. Un comando tiene que indicar la partición; en la propia página, el botón Produce Message (producir mensaje) del tema hace lo mismo.

Comando
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"coffee","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"tea","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":1,"key":"bob","value":"cake","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

3. Mira los offsets y léelo de vuelta

Ejecuta otra vez el primer comando: la partición 0 dice ahora "offsetMax":2, la partición 1 dice 1 y la partición 2 sigue diciendo 0. Cada partición cuenta por su cuenta. El segundo comando lee el tema desde el principio, que es lo que hace un consumidor nuevo, e imprime la partición y el offset de cada mensaje junto a su valor: coffee es la partición 0 offset 0, tea es la partición 0 offset 1 y cake es la partición 1 offset 0. Llegan primero los más recientes, así que cake aparece antes que coffee; el orden real lo dan los offsets.

Comando
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
curl -s -N "http://kafka-ui:8080/api/clusters/lab/topics/orders/messages/v2?seekType=BEGINNING&limit=10" | grep -o '"partition":[0-9]*,"offset":[0-9]*\|"value":"[a-z]*"'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio son dos servicios, un broker y la página que lo lee, y nada de lo que hay aquí se corrige solo: el alumno entrega los offsets de antes y de después y una frase que explique por qué cada partición empieza en cero. El broker no conserva nada cuando el laboratorio se detiene. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.

Sobre este laboratorio y su código: Laboratorio de Kafka: topics, productores, consumidores, particiones y offsets en el navegador

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.