0.0.6 • Published 3 days ago

@controlle.tecnologia/rabbitmq v0.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
3 days ago

Esta biblioteca RabbitMQ para Nestjs foi escrita para ajudar os programadores a terem mais controle sobre RabbitMQ ao usar Nestjs, sem exigir muito esforço para obtê-lo.

Como utilizar


  pnpm i @controlle.tecnologia/rabbitmq

Agora que temos a biblioteca em nosso projeto, basta importar o ControlleRabbitmqModule para o módulo principal da nossa aplicação como no exemplo abaixo.

ControlleRabbitmqModule.forRoot({
  urls: ['amqp://guest:guest@localhost:5672'],
  prefetch: {
    publishChannel: 1,
    rpcChannel: 1,
    subscribeChannel: 5,
  },
});
Apenas o parâmetro "urls" é necessário, mas você poderá configurar outras coisas neste módulo, como timeout e a configuração inicial dos canais.

Use Case


Queue decorator

No exemplo a seguir mostrarei como tratar uma nova mensagem da fila e registrar os dados recebidos.

  @Queue({ queue: 'controlle-rabbitmq-dev-q1'})
  async consumer(payload: any, message: ConsumeMessage) {
    console.log('message data', payload);
  }

Um método decorado com Queue decorator recebe dados de mensagens através do parâmetro payload. Você pode obter a mensagem inteira usando o segundo parâmetro que é opcional, este tipo de parâmetro vem de @types/ amqplib, então se você quiser usar este tipo em seu projeto você deve adicionar @types/amqplib em seu package.json


ControlleRabbitmqService

Como você já importou ControlleRabbitmqModule no appModule, agora você pode injetar a classe ControlleRabbitmqService em seus serviços usando DI nestjs como no exemplo abaixo

  constructor(private readonly amqpService: ControlleRabbitmqService) {}

Este objeto fornece a você um controle total sobre todos os canais que são publishChannel, subscribeChannel, rpcChannel, você pode acessá-los através do objeto channelManagerTool que é uma propriedade de ControlleRabbitmqService. Todos esses canais são do tipo ChannelWrapper, que é o mesmo tipo que vem de amqplib.


Sending a message

Se você já injetou seu ControlleRabbitmqService em seu serviço, você pode utilizá-lo para enviar uma mensagem acessando o publishChannel como no exemplo abaixo.

await this.amqpService.publishTool.sendToQueue({
  queue: 'controlle-rabbitmq-dev-q1',
  payload: { name: 'Hiran Junior', id: 1 },
});

Para enviar uma mensagem, você terá que passar um objeto que possui 2 propriedades: queue para referenciar qual fila a mensagem será entregue e payload que são seus dados.

0.0.7-a

3 days ago

0.0.5-g

3 months ago

0.0.6

3 months ago

0.0.5-f

3 months ago

0.0.5-e

3 months ago

0.0.5-d

3 months ago

0.0.5-c

3 months ago

0.0.5-b

3 months ago

0.0.5-a

3 months ago

0.0.5

5 months ago

0.0.10-async

5 months ago

0.0.4-async

5 months ago

0.0.15-async

5 months ago

0.0.8-async

5 months ago

0.0.18-async

5 months ago

0.0.9-async

5 months ago

0.0.11-async

5 months ago

0.0.6-async

5 months ago

0.0.17-async

5 months ago

0.0.12-async

5 months ago

0.0.13-async

5 months ago

0.0.16-async

5 months ago

0.0.5-async

5 months ago

0.0.7-async

5 months ago

0.0.14-async

5 months ago

0.0.4

6 months ago

0.0.3

6 months ago

0.0.2

6 months ago

0.0.1

6 months ago