Skip to content

Instantly share code, notes, and snippets.

@ermogenes
Last active February 17, 2023 10:31
Show Gist options
  • Save ermogenes/27b5ff7c45c55d28d73a86a3db216334 to your computer and use it in GitHub Desktop.
Save ermogenes/27b5ff7c45c55d28d73a86a3db216334 to your computer and use it in GitHub Desktop.
Dicas de Kafka no Windows com WSL2

Dicas de Kafka no Windows com WSL2

Pré-requisitos:

  • Windows com WSL versão 2.
  • Uma instância de Linux no WSL (eu usei Ubuntu-20.04 da Microsoft Store).

Instalando o Kafka

Em sua instância Linux, instale o OpenJDK 8:

sudo apt-get install openjdk-8-jdk

Encontre o link de um mirror dos binários do Kafka na página oficial de downloads.

Exemplo (versão 2.8):

wget https://mirror.nbtelecom.com.br/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz

Descompacte o arquivo baixado.

tar -xzvf kafka_2.13-2.8.0.tgz

Crie diretórios para os dados do Zookeeper e do Kafka.

cd kafka_2.13-2.8.0
mkdir data
mkdir data/kafka
mkdir data/zookeeper

Aponte os diretórios nos arquivos de configuração.

Edite:

nano config/zookeeper.properties

Altere:

dataDir=/your/path/to/data/zookeeper

Edite:

nano config/server.properties

Altere:

log.dirs=/your/path/to/data/kafka

Iniciando o servidor

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

Endereçamento do servidor

Em um terminal do WSL, obtenha o IP ao qual a máquina virtual responde:

ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

Ele deve ser liberado em config/server.properties:

listeners=PLAINTEXT://<ip-encontrado-acima>:9092

Esse IP deve ser usado para acessar externamente e internamente, na configuração bootstrap-server, em qualquer tipo de consumer.

Não há necessidade de se fazer port forwarding.

Exemplo:

Veja que no Windows não há redirecionamento:

c:\>netsh interface portproxy show v4tov4


c:\>

Na instância WSL podemos obter o IP:

➜  ~ ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
172.25.145.150
➜  ~

E acessá-lo:

c:\>ping 172.25.145.150 -n 1

Disparando 172.25.145.150 com 32 bytes de dados:
Resposta de 172.25.145.150: bytes=32 tempo=1ms TTL=64

(...)

c:\>

Podemos consumir normalmente agora via terminal:

➜  kafka_2.13-2.8.0 bin/kafka-console-consumer.sh --bootstrap-server 172.25.145.150:9092 --topic first_topic
hello world
^CProcessed a total of 1 messages
➜  kafka_2.13-2.8.0

Em uma aplicação Java rodando no Windows usamos ProducerConfig.BOOTSTRAP_SERVERS_CONFIG com o valor 172.25.145.150:9092 pra produzir a mensagem hello world acima.

@LeoNevesB
Copy link

Muito bom!!
Estava quebrando a cabeça para acessar o tópico, criado no WSL, via IDE no Windows.
@ermogenes , como conseguiu chegar na solução de configuração da propriedade listeners do server.properties ?

@ermogenes
Copy link
Author

@LeoNevesB muita pesquisa, tentativa e erro. Resumi quase tudo aqui.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment