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

Como Resolver Problema de Teclado e Mouse Não Funcionando no Ubuntu

Como resolver problema com teclado e mouse no Ubuntu Como Resolver Problema de Teclado e Mouse Não Funcionando no Ubuntu Encontrar-se sem teclado e mouse funcionando no Ubuntu pode ser frustrante, especialmente quando precisamos realizar tarefas urgentes. Este artigo aborda uma solução simples e eficaz: reinstalar o pacote xserver-xorg-input-all , que é responsável pelo suporte aos dispositivos de entrada no sistema. Passos para resolver o problema Para resolver este problema, siga os passos abaixo. Será necessário acessar o sistema como usuário root através do modo de recuperação pelo GRUB. 1. Acesse o modo de recuperação pelo GRUB Caso o teclado e o mouse não estejam funcionando, siga os passos abaixo para acessar o terminal no modo de recuperação: Reinicie o computador e, durante a inicialização, pressione repetidamente a tecla Shift ...

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