- Docker: Asegúrate de tener Docker instalado en tu macOS. Puedes descargarlo desde aquí.
- Docker Compose: Viene incluido con Docker Desktop, así que no necesitas instalarlo por separado.
Docker Compose te permite definir y ejecutar múltiples contenedores (como Kafka y Zookeeper) con un solo archivo de configuración.
Crea un archivo llamado docker-compose.yml
en una carpeta de tu elección y pega el siguiente contenido:
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:latest
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
depends_on:
- zookeeper
En la terminal, navega a la carpeta donde guardaste el archivo docker-compose.yml
y ejecuta:
docker-compose up -d
Esto descargará las imágenes de Zookeeper y Kafka (si no las tienes) y levantará los contenedores en segundo plano.
docker ps
Deberías ver dos contenedores: zookeeper
y kafka
.
docker exec -it kafka /bin/bash
Una vez dentro del contenedor de Kafka, puedes usar los comandos de Kafka para crear un tema, producir y consumir mensajes.
kafka-topics --create --topic mi-tema-prueba --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
kafka-console-producer --topic mi-tema-prueba --bootstrap-server localhost:9092
Escribe algunos mensajes y presiona Enter después de cada uno.
kafka-console-consumer --topic mi-tema-prueba --from-beginning --bootstrap-server localhost:9092
Verás los mensajes que enviaste desde el productor.
Cuando termines, puedes detener y eliminar los contenedores con:
docker-compose down
Si prefieres no usar Docker Compose, puedes ejecutar Kafka y Zookeeper con comandos docker run
individuales. Sin embargo, Docker Compose es más conveniente para manejar múltiples contenedores.
- No necesitas instalar Java, Kafka o Zookeeper en tu sistema.
- Todo está aislado en contenedores, lo que facilita la limpieza y evita conflictos con otras versiones.
- Puedes levantar y detener Kafka rápidamente con un solo comando.
kafka-topics --list --bootstrap-server localhost:9092
kafka-topics --describe --topic mi-tema-prueba --bootstrap-server localhost:9092
kafka-topics --delete --topic mi-tema-prueba --bootstrap-server localhost:9092