Que es event-manager-interfaces
Este paquete te permite crear una arquitectura independiente de la tecnologia utilizada para manejar los eventos.
Por ejemplo, en un sistema basado en microservicios se pueden definir varias tecnologias como Event-Bus que a su vez trae un cliente para interactuar con este.
La idea es independizar el cliente, de manera que se pueda utilizar una estructura "éstandar" entre todos los microservicios, que a su vez permita manejar varias tecnologias de manejo de eventos (un event manager con Redis y otro con Rabbit MQ por ejemplo).
Iniciar
Para obtener el paquete debe correr el siguiente comando:
npm i event-manager-interfaces
Configurar
;;; const eventManager = ; eventManager; eventManager; eventManager; eventManager ;
Emitir y Esperar
Algunos clientes tienen la opcion de permitir esperar una respuesta luego de emitir un evento. Para esto el Listener debe tener un handler que retorne algo, y con la funcion emitAndWait del cliente (una promesa) se puede acceder al valor retornado por el Listener.
const eventManager = ; eventManager; eventManager eventManager;
Implementacion recomendada
Para implementar estas interfaces, recomiendo aislar la instanciacion del EventManager y consumirlo solo en los modulos que lo requieran, haciendo uso de las interfaces que este expone.
EventManager.ts
rabbitmqEventManager = application: 'micro-test-app' url: 'amqp://localhost'; const eventManager = ; eventManager; ;
consumer.ts
{ eventManager; eventManager; eventManager; eventManager; eventManager; }
producer.ts
; eventManager; eventManager; eventManager; eventManager; eventManager;
Consumer vendria a definir todos los listener para los eventos que se piensan manejar en tu microservicio.
Producer es el responsable de emitir los eventos y puede llamarse desde cualquier parte, por ejemplo imagina que un listener espera al evento 'CREAR_USUARIO' luego de crear el usuario este emite un evento 'USUARIO_CREADO'
public { manager }
Version 2.0.0
Hello Middlewares
In this version we introduce middlewares, yes is a simple kind of it, but middlewares anyway. Let's see how it works.
the basics
First theres a new method called 'use' (yes inspired by Express :) ), well what this method do, basically it take a Function that return some value (or a Promise) and receive one parameter (the payload!).
Lets see an example
const eventManager = ; eventManager; eventManager; eventManager; eventManager; eventManager; eventManager; //empty payloadeventManager; //empty payload
With this every emitted event will execute the middlewares that you register with .use method.
Version 3.0.0
We remove multiple clients support.
now addClient method set a single instance of some eventManager (addClient now replace the eventManager in use);
3.0.3
adding optionals parameters to emitAndWait, on and emit method:
emitAndWait can take two parameter one for emit options and other for listenerOptions
on accept listenerOptions optional parameter
emit accept options for emit configuration optional parameter