Este guia prático descreve como configurar e iniciar o Apache Kafka versão 3 em poucos minutos, utilizando contêineres Docker. É uma abordagem eficaz para ter uma instância de Kafka funcional para fins de desenvolvimento ou para validação local.
Implantação do Apache Kafka via Docker
Para iniciar seu ambiente Kafka, empregaremos uma imagem Docker oficial. É fundamental que você substitau 192.168.X.X pelo endereço IP da sua máquina host. Este IP é vital para que qualquer cliente externo (como produtores e consumidores) possa se conectar ao broker Kafka.
É importante notar que o comando a seguir presume a existência de uma instância do Apache ZooKeeper já operacional e acessível no endereço e porta especificados (por exemplo, 192.168.X.X:2181). Embora o Kafka esteja em transição para o modo KRaft (sem dependência de ZooKeeper), a versão 3 ainda pode ser configurada para utilizá-lo para coordenação.
docker run -d \
--log-driver json-file \
--log-opt max-size=100m \
--log-opt max-file=2 \
--name kafka-instance \
-p 9092:9092 \
-e KAFKA_BROKER_ID=101 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.X.X:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.X.X:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-v /etc/localtime:/etc/localtime:ro \
bitnami/kafka:latest
Uma breve descrição dos parâmetros utilizados neste comando:
-d: Inicia o contêiner em segundo plano (detached mode).--name kafka-instance: Atribui um nome descritivo ao contêiner Docker.-p 9092:9092: Mapeia a porta padrão do Kafka (9092) do contêiner para a porta 9092 da máquina host.-e KAFKA_BROKER_ID=101: Define um identificador único para este broker Kafka.-e KAFKA_ZOOKEEPER_CONNECT: Especifica o endereço de conexão para o servidor ZooKeeper.-e KAFKA_ADVERTISED_LISTENERS: O endereço que os clientes externos usarão para se comunicar com o broker.-e KAFKA_LISTENERS: Os ouvintes que o Kafka usará internamente.-v /etc/localtime:/etc/localtime:ro: Sincroniza o arquivo de fuso horário do host com o contêiner.
Interagindo com o Contêiner Kafka
Após a inicialização do contêiner, você pode acessar seu terminal para executar comandos diretamente na instância do Kafka:
docker exec -it kafka-instance /bin/bash
Uma vez dentro do contêiner, é uma boa prática navegar até o diretório onde os scripts executáveis do Kafka estão localizados:
cd /opt/bitnami/kafka/bin
Confirmando a Versão do Kafka
Para verificar qual versão do Kafka está em execução dentro do contêiner, utilize o comando a seguir:
kafka-topics.sh --version
Verificação Funcional do Kafka
Para assegurar que o Kafka está operando corretamente, realizaremos um teste completo: criar um tópico, produzir mensagens e consumi-las.
Criação de um Tópico
Ainda dentro do shell do contêiner Kafka, crie um novo tópico que chamaremos de quick-start-topic:
./kafka-topics.sh --create --topic quick-start-topic --bootstrap-server localhost:9092
Envio e Recepção de Mensagens
Para testar a capacidade de comunicação do Kafka, você precisará abrir dois novos terminais na sua máquina host (fora do contêiner). Em um terminal, configure o consumidor, e no outro, o produtor.
Configuração do Consumidor
No primeiro novo terminal, execute o comando para iniciar um consumidor que lerá todas as mensagens do tópico quick-start-topic desde o início:
docker exec -it kafka-instance /opt/bitnami/kafka/bin/kafka-console-consumer.sh \
--topic quick-start-topic \
--from-beginning \
--bootstrap-server localhost:9092
Configuração do Produtor
No segundo novo terminal, inicie o produtor. Qualquer texto digitado e enviado neste terminal será publicado no tópico Kafka:
docker exec -it kafka-instance /opt/bitnami/kafka/bin/kafka-console-producer.sh \
--topic quick-start-topic \
--bootstrap-server localhost:9092
Agora, no terminal onde o produtor está ativo, digite algumas mensagens e pressione Enter após cada uma. Por exemplo:
{"event_id": 001, "payload": "Primeira mensagem de teste"}
{"event_id": 002, "payload": "Dados de exemplo enviados ao Kafka"}
Você deverrá observar que essas mensagens aparecem instantaneamente no terminal do cosnumidor, confirmando que sua instalação do Kafka está plenamente funcional e que a comunicação entre produtor e consumidor foi estabelecida com sucesso.