1.0.2 • Published 2 years ago

rabbitmq-xdigital v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Biblioteca de comunicação dos serviços XDgital via RabbitMQ

Docs

Essa lib foi desenvolvida com intuito de facilitar a comunicação via RabbitMQ O RabbitMq funciona com dois agentes os Publishers e os Subscribers

  • Publisher:
  • Envia um evento para uma um "escutador" do determinado evento.
  • Subscribers:
  • Seria um "escutador" que escuta a fila para receber um evento.

Para publicar

  • Primeiro buildar o projeto:
npm run link
  • Enviar para o npm:
npm publish

Para instalar

npm i https://github.com/HOSTSERVERDOBRASIL/xdigital-rabbitmq

Como usar

  • Para Criar um evento: No arquivo events.ts criar uma nova classe de evento com os dados que deseja ser enviado implementando a interface iEvent.ts
    export class ExemploEvent implements iEvent{
        nome: string;
        queue: string;
        constructor(nome: string) {
            this.nome = nome;
            this.queue = 'NomeDaFila'
        }
    }
  • Para Enviar um evento deve-se:
    • Na classe ou metodo que irá disparar o evento deve-se:
      • Instanciar um canal:
        ...
        const rabbitMq = RabbitMqConfiguration.getInstance("amqp://usuario:senha@host:porta");
        rabbitMq.then(async (res: { getChannel: () => any; }) => {
            const channel = await res.getChannel();
            const publisher = new BusPublisher(channel);
            const evento = new ExemploEvent('nome')
            publisher.publishAsync(evento);
        })
        ...
      • Exe
  • Para quem irá receber o evento, no arquivo index do projeto, no metodo bootstrap deve-se:

    • Configurar o subscriver da seguinte forma

      • Instanciar um canal:
        ...
        const rabbitMq = RabbitMqConfiguration.getInstance("amqp://usuario:senha@host:porta");
        ...
      • Resolver a conexão e criar um novo subscriber:
        ...
        const rabbitMq = RabbitMqConfiguration.getInstance("amqp://usuario:senha@host:porta");
        rabbitMq.then(async (res: { getChannel: () => any; }) => {
            const channel = await res.getChannel();
            const subscription = new BusSubscriber(channel);            
        })
      • escutar o evento:

        const rabbitMq = RabbitMqConfiguration.getInstance("amqp://usuario:senha@host:porta");
        rabbitMq.then(async (res: { getChannel: () => any; }) => {
        const channel = await res.getChannel();
        const subscription = new BusSubscriber(channel);
        subscription
            .subscriberEvent('NomeDaFila', (obj: any): Promise<void> => {
            // aqui deve-se colocar a ação que o sistema irá excutar após receber o evento
            return Promise.resolve()
            })
        })