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=...

Como Migrar Arquivos do AWS S3 para Azure Blob Storage

Como Migrar Arquivos do AWS S3 para Azure Blob Storage Como Migrar Arquivos do AWS S3 para Azure Blob Storage Este tutorial ensina como realizar a migração de todos os arquivos e pastas de um bucket S3 da AWS para o Azure Blob Storage de forma eficiente e segura. Pré-requisitos Uma conta AWS com acesso ao bucket S3. Uma conta Azure com um container configurado no Blob Storage. Instalação da AWS CLI e da Azure CLI . Configuração das credenciais de ambas as plataformas. Passo 1: Configurar as Ferramentas de Linha de Comando Configurar a AWS CLI Certifique-se de que a AWS CLI está instalada e configurada com as credenciais apropriadas: aws configure Insira o Access Key ID , Secret Access Key , região e formato de saída (por exemplo, JSON). Configurar a Azure CLI Faça login na sua conta Azure usando a Azure CLI: az login ...