Usando Kafka localmente

En esta entrada dejaremos funcionando Kafka localmente
  1. Descarguemos kafka, como normalmente ocurre, hay varias opciones, yo prefiero bajar el binario.
  2. Luego extraerlo en donde lo ocuparemos y le podemos crear una carpeta llamada data para lo que viene:
  3. Agregar el bin de Kafka al path:
    
        export PATH=~/code/kafka/kafka_2.13-3.9.0/bin/:$PATH
        
  4. Configurar los brokers
    Acá configuraremos 3 brokers, para eso vamos a la carpeta kafka_2.13-3.9.1/config y creamos 3 archivos: kafka1.properties, kafka2.properties y kafka3.properties.

    NO OLVIDAR, hay que indicar la carpeta donde quedarán los datos (en mi caso es /home/sebastian/code/kafka/data/):

    kafka1.properties:
    
    broker.id=1
    log.dirs=/home/sebastian/code/kafka/data/kafka1
    listeners=PLAINTEXT://:9092,CONTROLLER://:9192
    process.roles=broker,controller
    controller.quorum.voters=1@localhost:9192,2@localhost:9193,3@localhost:9194
    controller.listener.names=CONTROLLER
    listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT    
    
    kafka2.properties:
    
    broker.id=2
    log.dirs=/home/sebastian/code/kafka/data/kafka2
    listeners=PLAINTEXT://:9093,CONTROLLER://:9193
    process.roles=broker,controller
    controller.quorum.voters=1@localhost:9192,2@localhost:9193,3@localhost:9194
    controller.listener.names=CONTROLLER
    listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
    
    kafka3.properties:
    
    broker.id=3
    log.dirs=/home/sebastian/code/kafka/data/kafka3
    listeners=PLAINTEXT://:9094,CONTROLLER://:9194
    process.roles=broker,controller
    controller.quorum.voters=1@localhost:9192,2@localhost:9193,3@localhost:9194
    controller.listener.names=CONTROLLER
    listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
    

    copiar y pegar el contenido en el archivo indicado.

  5. Tenemos que inicializar los directorios de cada broker (cambiar versiones y directorios si es necesario), ejecutar en forma secuencial:
    
    export KAFKA_CLUSTER_ID="$(kafka-storage.sh random-uuid)"
    kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ~/code/kafka/kafka_2.13-3.9.1/config/kafka1.properties
    kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ~/code/kafka/kafka_2.13-3.9.1/config/kafka2.properties
    kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ~/code/kafka/kafka_2.13-3.9.1/config/kafka3.properties
        

    la salida sería algo así:
  6. Ahora iniciar los brokers con los siguiente comando:
    
      kafka-server-start.sh ~/code/kafka/kafka_2.13-3.9.1/config/kafka1.properties
      kafka-server-start.sh ~/code/kafka/kafka_2.13-3.9.1/config/kafka2.properties
      kafka-server-start.sh ~/code/kafka/kafka_2.13-3.9.1/config/kafka3.properties
      
    ejecutarlos en terminales separados o usar el & para unirlos y lanzarlos juntos en una sola linea.

  7. Para detenerlos hay que ejecutar:
    
            ~/code/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
            
  8. Listo!


con eso queda lista la configuración inicial de Kafka, lista para jugar, crear tópicos y enviar mensajes 😀

Bonus por llegar al final: creaer un tópico

Para crear un tópico ejecutamos:

          kafka-topics.sh \
          --create \
          --topic the.topic \
          --partitions 1 \
          --replication-factor 1 \
          --bootstrap-server localhost:9092
        

Comentarios

Entradas más populares de este blog

Spring Boot + Spring Security + React + Keycloak

Servicios: Invertir las dependencias utilizando el sistema de módulos

Usando Redis en Pruebas [versión 2]