Pular para o conteúdo principal

Implementado Comunicação entre Microserviços Apache Kafka em Nodejs


Implementando Comunicação entre Microserviços com Apache Kafka em Node.js

Implementando Comunicação entre Microserviços com Apache Kafka em Node.js

O Apache Kafka é uma plataforma distribuída de mensagens em tempo real, ideal para comunicação entre microserviços. Neste artigo, implementaremos um produtor e um consumidor Kafka usando Node.js.

1. Configuração do Ambiente

Antes de começar, instale o Docker e configure um cluster Kafka com Zookeeper:

docker-compose up -d

Crie um arquivo docker-compose.yml para rodar o Kafka:

version: '3.8'

services:
  zookeeper:
    image: bitnami/zookeeper:latest
    container_name: zookeeper
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    ports:
      - "2181:2181"

  kafka:
    image: bitnami/kafka:latest
    container_name: kafka
    depends_on:
      - zookeeper
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
    ports:
      - "9092:9092"

  kafka-ui:
    image: provectuslabs/kafka-ui:latest
    container_name: kafka-ui
    depends_on:
      - kafka
    environment:
      - KAFKA_CLUSTERS_0_NAME=local
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
    ports:
      - "8089:8080"

networks:
  default:
    name: kafka-network

2. Criando o Produtor Kafka

O produtor enviará mensagens para um tópico Kafka.

Instale as dependências:

npm init -y

npm install kafkajs

Crie o arquivo producer.js:

const { Kafka } = require('kafkajs');

const kafka = new Kafka({

  clientId: 'my-producer',

  brokers: ['localhost:9092']

});

const producer = kafka.producer();

const sendMessage = async () => {

  await producer.connect();

  await producer.send({

    topic: 'test-topic',

    messages: [{ value: 'Olá, Kafka!' }],

  });

  await producer.disconnect();

};

sendMessage().catch(console.error);

3. Criando o Consumidor Kafka

O consumidor receberá mensagens do tópico.

Crie o arquivo consumer.js:

const { Kafka } = require('kafkajs');

const kafka = new Kafka({

  clientId: 'my-consumer',

  brokers: ['localhost:9092']

});

const consumer = kafka.consumer({ groupId: 'test-group' });

const run = async () => {

  await consumer.connect();

  await consumer.subscribe({ topic: 'test-topic', fromBeginning: true });

  await consumer.run({

    eachMessage: async ({ message }) => {

      console.log(`Mensagem recebida: ${message.value.toString()}`);

    },

  });

};

run().catch(console.error);

4. Testando a Comunicação

1. Inicie o consumidor:

node consumer.js

2. Envie uma mensagem com o produtor:

node producer.js

O consumidor deve exibir a mensagem enviada!

Conclusão

Com Kafka, conseguimos uma comunicação assíncrona eficiente entre microserviços. Essa abordagem melhora a escalabilidade e a resiliência da aplicação.

Comentários

Postagens mais visitadas deste blog

Guia de Instalação e Configuração do Docker no Ubuntu

 O Docker é uma ferramenta poderosa para criar, testar e implantar aplicações de maneira rápida e eficiente em containers. Este guia vai cobrir os passos necessários para instalar e configurar o Docker no Ubuntu. Atualizar o Sistema Antes de começar, é uma boa prática garantir que o sistema está atualizado: sudo apt update sudo apt upgrade Instalar Dependências O Docker requer alguns pacotes adicionais para funcionar corretamente. Vamos instalá-los: sudo apt install apt-transport-https ca-certificates curl software-properties-common Esses pacotes permitem ao Ubuntu utilizar pacotes de repositórios via HTTPS. Adicionar a Chave GPG do Docker Para garantir que os pacotes baixados sejam autênticos, precisamos adicionar a chave GPG oficial do Docker: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Adicionar o Repositório Docker Agora, adicione o repositório Docker ao sistema: echo "deb [arch=amd64 signed-by=...

Guia de instalação e configuração do Portainer no Ubuntu

  Guia Completo de Instalação do Portainer.io no Docker O Portainer.io é uma ferramenta poderosa e amigável para o gerenciamento de containers Docker, Swarm e Kubernetes. Se você trabalha com containers, essa é uma solução essencial para facilitar sua administração. Vamos aprender como instalar e configurar o Portainer no Docker. O que é o Portainer.io? O Portainer.io é uma interface gráfica simples, que permite gerenciar de maneira centralizada seus containers, volumes, redes e imagens Docker. Ele pode ser utilizado por iniciantes e profissionais, pois oferece uma administração visual dos seus ambientes. Benefícios do Portainer Interface amigável : Gerencie containers de forma visual, tornando a administração mais simples e intuitiva. Gerenciamento centralizado : Administre múltiplos ambientes Docker/Kubernetes em um único local. Facilidade para iniciantes : Reduz a curva de aprendizado do Docker com sua interface gráfica. Gerenciamento de volumes e redes : ...