2.0.1 • Published 8 months ago

@djpfs/adonisjs-microservices v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Este pacote é projetado para simplificar a comunicação entre microserviços em sua aplicação Adonis. Atualmente, ele suporta a integração com o Apache Kafka e está planejado para adicionar suporte a outros sistemas de mensagens, como RabbitMQ e gRPC no futuro.

npm i @djpfs/adonisjs-microservices

Após a instalação, execute o seguinte comando para configurar o pacote:

node ace configure @djpfs/adonisjs-microservices

Este comando irá configurar os arquivos necessários para o funcionamento do pacote no seu projeto.

npm i kafkajs

Adicione as seguintes configurações ao seu arquivo .env substituindo os valores de acordo com o seu ambiente:

KAFKA_CLIENT_ID='service-gateway'
KAFKA_GROUP_ID='gateway'
KAFKA_BROKERS='kafka1:9092,kafka2:9093,kafka3:9094'
KAFKA_SSL=false
KAFKA_SASL=false
KAFKA_SASL_MECHANISM='scram-sha-512'
KAFKA_SASL_USERNAME='username'
KAFKA_SASL_PASSWORD='password'
KAFKA_LOG_LEVEL=4
import { MsMessage } from "App/Decorators/MsMessage";
import { KafkaPayload } from "App/Helpers/Types/Microservice";

export default class AuthController {

  @MsMessage('kafka.auth.login')
  public async login(message: KafkaPayload) {
    console.log(message.message)
  }
}

O decorator espera um string como parametro, que deve ter pelo menos um . (ponto) para separar o nome transporte do tópico. O nome do transporte deve ser o mesmo que você definiu no arquivo de configuração do pacote.

Ex: kafka.auth.login, onde "kakfa" é o nome do transporte e "auth.login" é o nome do tópico

Para enviar mensagens, você deve importar o Transports e o KafkaTransport no seu arquivo de controller e usar o método send do transport para enviar a mensagem:

import Transports from "@ioc:Microservice/Transports";
import KafkaTransport from '@djpfs/adonisjs-microservices/build/src/transports/kafka'

export default class AuthController {

  public async sendMessage() {
    const transport: KafkaTransport = Transports.getTransport('kafka')
    await transport.producer.send({
      topic: 'auth.login',
      messages: [
        { value: 'Hello KafkaJS user!' },
      ],
    })
  }
}

Você pode configurar o kafka com todas as configurações disponíveis no pacote kafkajs editando as configurações no arquivo config/microservices.ts:

2.0.1

8 months ago

2.0.0

8 months ago

1.0.8

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago